Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
jazzy

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
kilted

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
lyrical

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
rolling

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

cloudini_lib package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.4.1
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti
README
No README found. See repository README.
CHANGELOG

Changelog for package cloudini_lib

1.4.1 (2026-09-29)

  • fix: build with MSVC. The V6 encoder called the GCC/Clang builtin __builtin_clzll; it now uses std::countl_zero. Output is unchanged.
  • ci: build and test the library with MSVC on Windows.

1.4.0 (2026-09-28)

  • feat: V6 wire format, now the default (#150)

    • V6 codes x, y, z as residual streams against a predictor chosen per chunk (previous point, point K back, LOCO-I median of the two, second order), skips no-return points with a validity mask, and gives every other float field its own stream. With ZSTD, the median output is 13% smaller than V5 on 13 LiDAR/depth datasets.
    • Encoders write V6 by default. Decoders from 1.3.1 and earlier cannot read it: select version 5 for them (--encoding-version 5, encoding_version:=5, cloudini_encoding_version: 5, or EncodingInfo::version = 5).
    • Resolutions are refined to the data by default (RefineResolutionsToData): integer-valued floats such as intensity are stored at resolution 1, with the same error bound. On a 2.8 GB warehouse bag, V6 with refinement is 24% smaller than 1.3.1 and decodes 1.75x faster. cloudini_rosbag_converter --no-refine turns it off.
    • V5: adaptive integer sections sized for the stage-2 compressor (same format).
    • Faster decode of V4, V5 and V6 (same bytes on the wire): up to +59% for V4 clouds with integer fields.
    • PointcloudEncoderCache keeps one encoder per stream (rosbag converter, topic converter, point_cloud_transport plugin, SerializeCompressedPointCloud2).
    • Fixes: heap overflow on crafted V5 RLE runs; writes past the output for fields beyond point_step; misaligned loads of packed fields; signed overflow on corrupted input; encoding versions no decoder reads are rejected by the encoder.
    • Tools: mcap_codec_benchmark V6 and V6-viz modes, --profile and --no-refine; cloudini_rosbag_converter --no-refine, profile files read whole.
  • fix: a cloud from a newer Cloudini fails with an error that asks to update Cloudini (library, ROS package or Foxglove extension), instead of "Unsupported encoding version"

  • fix: keep packed rgb/rgba FLOAT32 fields lossless (#135) (#146) Some ROS drivers pack RGB(A) as uint32 bits reinterpreted into a FLOAT32 field named "rgb"/"rgba". Every path that assigned a default resolution to FLOAT32 fields quantized these bits, destroying the colors. Add Cloudini::isPackedColorField() / defaultFieldResolution() in basic_types.hpp and use them in applyResolutionProfile, the PCL ConvertToEncodingInfo, the WASM encode helpers and the ROS ConvertToEncodingInfo. An explicit resolution profile entry still wins. Decoding needs no change: resolution is stored in the header. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • fix: parse/format header resolution locale-independently (#123) (#145) The YAML header resolution was parsed with std::stof, which honors the C locale: with a ',' decimal separator (e.g. de_DE.UTF-8) "0.001" was read as 0 and FieldDecoderFloatN_Lossy threw during decoding. The writer used an ostringstream, which follows the global C++ locale (std::locale::global) and could emit "0,001" or grouped integers such as "1.234.567".

    - EncodingInfoToYAML: imbue the stream with std::locale::classic() and write resolutions with the shortest precision that round-trips exactly.

    • EncodingInfoFromYAML: parse resolution with a classic-locale stream.

    - YAML::Node::parseScalar: imbue std::locale::classic(). Streams are used instead of std::from_chars/to_chars for float because those are not available on all supported standard libraries (older libc++). Add regression tests that switch to a comma-decimal locale (C locale only, and C + global C++ locale), skipped if no such locale is installed. Claude-Session: https://claude.ai/code/session_01EAorWbhzp56yxAVUF7M3Dd Co-authored-by: Claude <<noreply@anthropic.com>>

  • Contributors: Davide Faconti

1.3.1 (2026-09-20)

  • build: make cloudini_lib embeddable with add_subdirectory / FetchContent (#142) Reuses zstd/lz4 targets defined by a parent project, ignores an inherited ament_cmake, and keeps the build type, tests, tools, benchmarks, PCL and install rules out of the parent. New options CLOUDINI_WITH_PCL and CLOUDINI_INSTALL; cloudini::cloudini_lib is

File truncated at 100 lines see the full file

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
cloudini_ros

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_lib at Robotics Stack Exchange