|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.3.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-20 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.3.1 (2026-09-20)
- No changes; released together with cloudini_lib 1.3.1
1.3.0 (2026-09-20)
- Fix license tags in package.xml According to ros_license_toolkit[\^1] license tags should be in SPDX list of licenses. In case of claudini_ros, the license version was missing and in case of claudini_lib, the license name was not "exact". This commit changes the license tags to use SPDX license identifiers. Note that it doesn't fix the failures reported in claudini_lib in the output below: [cloudini_ros] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache. LicensesInCodeCheck WARNING For the following files, please change the License Tag in the package file to SPDX format: 'include/cloudini_plugin/cloudini_publisher_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_plugin/cloudini_subscriber_plugin.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/cloudini_subscriber_pcl.hpp' is of Apache-2.0 but its Tag is Apache. 'include/cloudini_ros/conversion_utils.hpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_publisher_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_pcl.cpp' is of Apache-2.0 but its Tag is Apache. 'src/cloudini_subscriber_plugin.cpp' is of Apache-2.0 but its Tag is Apache. 'src/conversion_utils.cpp' is of Apache-2.0 but its Tag is Apache. 'src/plugin_manifest.cpp' is of Apache-2.0 but its Tag is Apache. 'src/topic_converter.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.cpp' is of Apache-2.0 but its Tag is Apache. 'test/draco_helper.hpp' is of Apache-2.0 but its Tag is Apache. 'test/rosbag_benchmark.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_cloudini_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_direct_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_publisher.cpp' is of Apache-2.0 but its Tag is Apache. 'test/test_plugin_subscriber.cpp' is of Apache-2.0 but its Tag is Apache. LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. --------------------[cloudini_lib] git hash of (/home/src/github.com/facontidavide/cloudini): d202e5255d12519ff1f3db1dac4df3ca0e550ee7 SchemaCheck SUCCESS Detected package.xml version 3, validation of scheme successful. LicenseTagExistsCheck SUCCESS Found licenses ['Apache 2.0'] LicenseTagIsInSpdxListCheck WARNING Licenses ['Apache 2.0'] are not in SPDX list of licenses. Make sure to exactly match one of https://spdx.org/licenses/. LicenseTextExistsCheck WARNING Since they are not in the SPDX list, we can not check if these tags have the correct license text: 'Apache 2.0': License text file '../LICENSE' is of license Apache-2.0 but tag is Apache 2.0. LicensesInCodeCheck FAILURE The following files contain licenses that are not covered by any license tag: 'benchmarks/pcd_benchmark.cpp': ['MIT'] 'cmake/CPM.cmake': ['MIT'] 'include/cloudini_lib/ros_message_definitions.hpp': ['BSD-3-Clause'] 'include/cloudini_lib/contrib/ankerl/stl.h': ['MIT'] 'include/cloudini_lib/contrib/ankerl/unordered_dense.h': ['MIT'] LicenseFilesReferencedCheck SUCCESS All license declaration are referenced by a tag. [\^1]: https://github.com/boschresearch/ros_license_toolkit
- Contributors: Michal Sojka
1.2.2 (2026-06-04)
- build: synchronized version bump with cloudini_lib (MSVC support; no functional changes here)
1.2.1 (2026-05-20)
- ci(rolling): build point_cloud_interfaces from source via vcstool until the apt-sync drop is resolved
1.2.0 (2026-05-05)
1.1.0 (2026-04-20)
- feat(gorilla): Gorilla bit-packed XOR for FLOAT64 lossless (backward compatible) (#93)
- Contributors: Davide Faconti
1.0.4 (2026-04-06)
- fix(ros): use ament_target_dependencies for pcl_conversions pcl_conversions 2.8.0 on Kilted switched from ament_export_include_directories to ament_export_targets, making ${pcl_conversions_INCLUDE_DIRS} empty and breaking the buildfarm. Use ament_target_dependencies which handles both old-style
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| pluginlib | |
| ament_cmake | |
| ament_lint_common | |
| ament_lint_auto | |
| cloudini_lib | |
| point_cloud_interfaces | |
| point_cloud_transport | |
| sensor_msgs | |
| rclcpp | |
| rclcpp_components | |
| rosbag2_cpp | |
| pcl_conversions |