Package symbol

cloudini_ros package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.0.4
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti

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/PointCloud2
  • point_cloud_interfaces/msg/CompressedPointCloud2

It is genrally more efficient than using the point_cloud_transport because the latter would:

  1. Receive a serialized DDS message.
  2. Convert that to CompressedPointCloud2.
  3. Do the actual decompression.
  4. 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

Changelog for package cloudini_ros

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 (INCLUDE_DIRS) and new-style (TARGETS) exports idiomatically. Co-Authored-By: Claude Opus 4.6 (1M context) <<noreply@anthropic.com>>
  • Contributors: Davide Faconti

1.0.2 (2026-03-04)

1.0.1 (2026-03-01)

1.0.0 (2026-02-21)

  • feat: make topic_converter composable for component container usage Build topic_converter as a shared component library with rclcpp_components, while keeping the standalone executable via EXECUTABLE directive. Intra-process comms moved into constructor so it works in both standalone and component container modes.
  • feat: add convenience API for compressing PointCloud2 directly (#58) Add SerializeCompressedPointCloud2() and ConvertToRosPointCloud2() to allow users to compress sensor_msgs::msg::PointCloud2 without the topic_converter node. Includes test_direct_publisher example node and CLAUDE.md documentation. Also removes redundant PCL_INCLUDE_DIRS from test_cloudini_subscriber target.
  • Fixed cmake issues and added some improvements (#55)
  • fix resolution profile not applied in ros_topic_converter (#49)
  • Contributors: Alireza Moayyedi, Davide Faconti, ペンギンの何か

0.11.1 (2025-12-12)

  • try fixing build in ROS
  • Contributors: Davide Faconti

0.11.0 (2025-11-29)

  • fix typo (#42)
  • add better Draco benchmarking
  • Contributors: Bastian Lampe, Davide Faconti

0.10.0 (2025-10-13)

  • cherry picking change from #38 . Better function name Thanks \@Tanishq30052002 for the suggestions
  • tons of ROS examples and utilities
  • files renamed
  • Contributors: Davide Faconti

0.9.0 (2025-10-11)

  • fix compilation
  • fix mcap_converter
  • Contributors: Davide Faconti

0.8.0 (2025-10-09)

  • Merge branch 'main' into msadowski/release_foxglove_extension
  • Merge pull request #33 from facontidavide/refactor_ros_interface Refactor ros interface
  • fixed topic_converter
  • changes API
  • fixed benchmark
  • updated benchmarks
  • Preprare ros release (#28)
  • Contributors: Davide Faconti

0.7.0 (2025-09-19)

0.6.1 (2025-08-28)

0.5.0 (2025-06-30)

0.4.0 (2025-06-15)

  • updated README
  • Contributors: Davide Faconti

0.3.3 (2025-06-11)

0.3.1 (2025-06-10)

  • Merge branch 'main' of github.com:facontidavide/cloudini
  • Update CMakeLists.txt
  • Included ROS 2 lint testing (#3) Co-authored-by: Davide Faconti <<davide.faconti@gmail.com>>
  • Contributors: Alejandro Hernández Cordero, Davide Faconti

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_ros at Robotics Stack Exchange

Package symbol

cloudini_ros package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
jazzy

Package Summary

Version 1.0.4
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti

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/PointCloud2
  • point_cloud_interfaces/msg/CompressedPointCloud2

It is genrally more efficient than using the point_cloud_transport because the latter would:

  1. Receive a serialized DDS message.
  2. Convert that to CompressedPointCloud2.
  3. Do the actual decompression.
  4. 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

Changelog for package cloudini_ros

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 (INCLUDE_DIRS) and new-style (TARGETS) exports idiomatically. Co-Authored-By: Claude Opus 4.6 (1M context) <<noreply@anthropic.com>>
  • Contributors: Davide Faconti

1.0.2 (2026-03-04)

1.0.1 (2026-03-01)

1.0.0 (2026-02-21)

  • feat: make topic_converter composable for component container usage Build topic_converter as a shared component library with rclcpp_components, while keeping the standalone executable via EXECUTABLE directive. Intra-process comms moved into constructor so it works in both standalone and component container modes.
  • feat: add convenience API for compressing PointCloud2 directly (#58) Add SerializeCompressedPointCloud2() and ConvertToRosPointCloud2() to allow users to compress sensor_msgs::msg::PointCloud2 without the topic_converter node. Includes test_direct_publisher example node and CLAUDE.md documentation. Also removes redundant PCL_INCLUDE_DIRS from test_cloudini_subscriber target.
  • Fixed cmake issues and added some improvements (#55)
  • fix resolution profile not applied in ros_topic_converter (#49)
  • Contributors: Alireza Moayyedi, Davide Faconti, ペンギンの何か

0.11.1 (2025-12-12)

  • try fixing build in ROS
  • Contributors: Davide Faconti

0.11.0 (2025-11-29)

  • fix typo (#42)
  • add better Draco benchmarking
  • Contributors: Bastian Lampe, Davide Faconti

0.10.0 (2025-10-13)

  • cherry picking change from #38 . Better function name Thanks \@Tanishq30052002 for the suggestions
  • tons of ROS examples and utilities
  • files renamed
  • Contributors: Davide Faconti

0.9.0 (2025-10-11)

  • fix compilation
  • fix mcap_converter
  • Contributors: Davide Faconti

0.8.0 (2025-10-09)

  • Merge branch 'main' into msadowski/release_foxglove_extension
  • Merge pull request #33 from facontidavide/refactor_ros_interface Refactor ros interface
  • fixed topic_converter
  • changes API
  • fixed benchmark
  • updated benchmarks
  • Preprare ros release (#28)
  • Contributors: Davide Faconti

0.7.0 (2025-09-19)

0.6.1 (2025-08-28)

0.5.0 (2025-06-30)

0.4.0 (2025-06-15)

  • updated README
  • Contributors: Davide Faconti

0.3.3 (2025-06-11)

0.3.1 (2025-06-10)

  • Merge branch 'main' of github.com:facontidavide/cloudini
  • Update CMakeLists.txt
  • Included ROS 2 lint testing (#3) Co-authored-by: Davide Faconti <<davide.faconti@gmail.com>>
  • Contributors: Alejandro Hernández Cordero, Davide Faconti

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_ros at Robotics Stack Exchange

Package symbol

cloudini_ros package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
kilted

Package Summary

Version 1.0.4
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti

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/PointCloud2
  • point_cloud_interfaces/msg/CompressedPointCloud2

It is genrally more efficient than using the point_cloud_transport because the latter would:

  1. Receive a serialized DDS message.
  2. Convert that to CompressedPointCloud2.
  3. Do the actual decompression.
  4. 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

Changelog for package cloudini_ros

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 (INCLUDE_DIRS) and new-style (TARGETS) exports idiomatically. Co-Authored-By: Claude Opus 4.6 (1M context) <<noreply@anthropic.com>>
  • Contributors: Davide Faconti

1.0.2 (2026-03-04)

1.0.1 (2026-03-01)

1.0.0 (2026-02-21)

  • feat: make topic_converter composable for component container usage Build topic_converter as a shared component library with rclcpp_components, while keeping the standalone executable via EXECUTABLE directive. Intra-process comms moved into constructor so it works in both standalone and component container modes.
  • feat: add convenience API for compressing PointCloud2 directly (#58) Add SerializeCompressedPointCloud2() and ConvertToRosPointCloud2() to allow users to compress sensor_msgs::msg::PointCloud2 without the topic_converter node. Includes test_direct_publisher example node and CLAUDE.md documentation. Also removes redundant PCL_INCLUDE_DIRS from test_cloudini_subscriber target.
  • Fixed cmake issues and added some improvements (#55)
  • fix resolution profile not applied in ros_topic_converter (#49)
  • Contributors: Alireza Moayyedi, Davide Faconti, ペンギンの何か

0.11.1 (2025-12-12)

  • try fixing build in ROS
  • Contributors: Davide Faconti

0.11.0 (2025-11-29)

  • fix typo (#42)
  • add better Draco benchmarking
  • Contributors: Bastian Lampe, Davide Faconti

0.10.0 (2025-10-13)

  • cherry picking change from #38 . Better function name Thanks \@Tanishq30052002 for the suggestions
  • tons of ROS examples and utilities
  • files renamed
  • Contributors: Davide Faconti

0.9.0 (2025-10-11)

  • fix compilation
  • fix mcap_converter
  • Contributors: Davide Faconti

0.8.0 (2025-10-09)

  • Merge branch 'main' into msadowski/release_foxglove_extension
  • Merge pull request #33 from facontidavide/refactor_ros_interface Refactor ros interface
  • fixed topic_converter
  • changes API
  • fixed benchmark
  • updated benchmarks
  • Preprare ros release (#28)
  • Contributors: Davide Faconti

0.7.0 (2025-09-19)

0.6.1 (2025-08-28)

0.5.0 (2025-06-30)

0.4.0 (2025-06-15)

  • updated README
  • Contributors: Davide Faconti

0.3.3 (2025-06-11)

0.3.1 (2025-06-10)

  • Merge branch 'main' of github.com:facontidavide/cloudini
  • Update CMakeLists.txt
  • Included ROS 2 lint testing (#3) Co-authored-by: Davide Faconti <<davide.faconti@gmail.com>>
  • Contributors: Alejandro Hernández Cordero, Davide Faconti

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_ros at Robotics Stack Exchange

Package symbol

cloudini_ros package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
rolling

Package Summary

Version 1.0.4
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti

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/PointCloud2
  • point_cloud_interfaces/msg/CompressedPointCloud2

It is genrally more efficient than using the point_cloud_transport because the latter would:

  1. Receive a serialized DDS message.
  2. Convert that to CompressedPointCloud2.
  3. Do the actual decompression.
  4. 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

Changelog for package cloudini_ros

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 (INCLUDE_DIRS) and new-style (TARGETS) exports idiomatically. Co-Authored-By: Claude Opus 4.6 (1M context) <<noreply@anthropic.com>>
  • Contributors: Davide Faconti

1.0.2 (2026-03-04)

1.0.1 (2026-03-01)

1.0.0 (2026-02-21)

  • feat: make topic_converter composable for component container usage Build topic_converter as a shared component library with rclcpp_components, while keeping the standalone executable via EXECUTABLE directive. Intra-process comms moved into constructor so it works in both standalone and component container modes.
  • feat: add convenience API for compressing PointCloud2 directly (#58) Add SerializeCompressedPointCloud2() and ConvertToRosPointCloud2() to allow users to compress sensor_msgs::msg::PointCloud2 without the topic_converter node. Includes test_direct_publisher example node and CLAUDE.md documentation. Also removes redundant PCL_INCLUDE_DIRS from test_cloudini_subscriber target.
  • Fixed cmake issues and added some improvements (#55)
  • fix resolution profile not applied in ros_topic_converter (#49)
  • Contributors: Alireza Moayyedi, Davide Faconti, ペンギンの何か

0.11.1 (2025-12-12)

  • try fixing build in ROS
  • Contributors: Davide Faconti

0.11.0 (2025-11-29)

  • fix typo (#42)
  • add better Draco benchmarking
  • Contributors: Bastian Lampe, Davide Faconti

0.10.0 (2025-10-13)

  • cherry picking change from #38 . Better function name Thanks \@Tanishq30052002 for the suggestions
  • tons of ROS examples and utilities
  • files renamed
  • Contributors: Davide Faconti

0.9.0 (2025-10-11)

  • fix compilation
  • fix mcap_converter
  • Contributors: Davide Faconti

0.8.0 (2025-10-09)

  • Merge branch 'main' into msadowski/release_foxglove_extension
  • Merge pull request #33 from facontidavide/refactor_ros_interface Refactor ros interface
  • fixed topic_converter
  • changes API
  • fixed benchmark
  • updated benchmarks
  • Preprare ros release (#28)
  • Contributors: Davide Faconti

0.7.0 (2025-09-19)

0.6.1 (2025-08-28)

0.5.0 (2025-06-30)

0.4.0 (2025-06-15)

  • updated README
  • Contributors: Davide Faconti

0.3.3 (2025-06-11)

0.3.1 (2025-06-10)

  • Merge branch 'main' of github.com:facontidavide/cloudini
  • Update CMakeLists.txt
  • Included ROS 2 lint testing (#3) Co-authored-by: Davide Faconti <<davide.faconti@gmail.com>>
  • Contributors: Alejandro Hernández Cordero, Davide Faconti

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_ros at Robotics Stack Exchange

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

cloudini_ros package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.0.4
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti

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/PointCloud2
  • point_cloud_interfaces/msg/CompressedPointCloud2

It is genrally more efficient than using the point_cloud_transport because the latter would:

  1. Receive a serialized DDS message.
  2. Convert that to CompressedPointCloud2.
  3. Do the actual decompression.
  4. 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

Changelog for package cloudini_ros

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 (INCLUDE_DIRS) and new-style (TARGETS) exports idiomatically. Co-Authored-By: Claude Opus 4.6 (1M context) <<noreply@anthropic.com>>
  • Contributors: Davide Faconti

1.0.2 (2026-03-04)

1.0.1 (2026-03-01)

1.0.0 (2026-02-21)

  • feat: make topic_converter composable for component container usage Build topic_converter as a shared component library with rclcpp_components, while keeping the standalone executable via EXECUTABLE directive. Intra-process comms moved into constructor so it works in both standalone and component container modes.
  • feat: add convenience API for compressing PointCloud2 directly (#58) Add SerializeCompressedPointCloud2() and ConvertToRosPointCloud2() to allow users to compress sensor_msgs::msg::PointCloud2 without the topic_converter node. Includes test_direct_publisher example node and CLAUDE.md documentation. Also removes redundant PCL_INCLUDE_DIRS from test_cloudini_subscriber target.
  • Fixed cmake issues and added some improvements (#55)
  • fix resolution profile not applied in ros_topic_converter (#49)
  • Contributors: Alireza Moayyedi, Davide Faconti, ペンギンの何か

0.11.1 (2025-12-12)

  • try fixing build in ROS
  • Contributors: Davide Faconti

0.11.0 (2025-11-29)

  • fix typo (#42)
  • add better Draco benchmarking
  • Contributors: Bastian Lampe, Davide Faconti

0.10.0 (2025-10-13)

  • cherry picking change from #38 . Better function name Thanks \@Tanishq30052002 for the suggestions
  • tons of ROS examples and utilities
  • files renamed
  • Contributors: Davide Faconti

0.9.0 (2025-10-11)

  • fix compilation
  • fix mcap_converter
  • Contributors: Davide Faconti

0.8.0 (2025-10-09)

  • Merge branch 'main' into msadowski/release_foxglove_extension
  • Merge pull request #33 from facontidavide/refactor_ros_interface Refactor ros interface
  • fixed topic_converter
  • changes API
  • fixed benchmark
  • updated benchmarks
  • Preprare ros release (#28)
  • Contributors: Davide Faconti

0.7.0 (2025-09-19)

0.6.1 (2025-08-28)

0.5.0 (2025-06-30)

0.4.0 (2025-06-15)

  • updated README
  • Contributors: Davide Faconti

0.3.3 (2025-06-11)

0.3.1 (2025-06-10)

  • Merge branch 'main' of github.com:facontidavide/cloudini
  • Update CMakeLists.txt
  • Included ROS 2 lint testing (#3) Co-authored-by: Davide Faconti <<davide.faconti@gmail.com>>
  • Contributors: Alejandro Hernández Cordero, Davide Faconti

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_ros at Robotics Stack Exchange

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

cloudini_ros package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.0.4
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti

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/PointCloud2
  • point_cloud_interfaces/msg/CompressedPointCloud2

It is genrally more efficient than using the point_cloud_transport because the latter would:

  1. Receive a serialized DDS message.
  2. Convert that to CompressedPointCloud2.
  3. Do the actual decompression.
  4. 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

Changelog for package cloudini_ros

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 (INCLUDE_DIRS) and new-style (TARGETS) exports idiomatically. Co-Authored-By: Claude Opus 4.6 (1M context) <<noreply@anthropic.com>>
  • Contributors: Davide Faconti

1.0.2 (2026-03-04)

1.0.1 (2026-03-01)

1.0.0 (2026-02-21)

  • feat: make topic_converter composable for component container usage Build topic_converter as a shared component library with rclcpp_components, while keeping the standalone executable via EXECUTABLE directive. Intra-process comms moved into constructor so it works in both standalone and component container modes.
  • feat: add convenience API for compressing PointCloud2 directly (#58) Add SerializeCompressedPointCloud2() and ConvertToRosPointCloud2() to allow users to compress sensor_msgs::msg::PointCloud2 without the topic_converter node. Includes test_direct_publisher example node and CLAUDE.md documentation. Also removes redundant PCL_INCLUDE_DIRS from test_cloudini_subscriber target.
  • Fixed cmake issues and added some improvements (#55)
  • fix resolution profile not applied in ros_topic_converter (#49)
  • Contributors: Alireza Moayyedi, Davide Faconti, ペンギンの何か

0.11.1 (2025-12-12)

  • try fixing build in ROS
  • Contributors: Davide Faconti

0.11.0 (2025-11-29)

  • fix typo (#42)
  • add better Draco benchmarking
  • Contributors: Bastian Lampe, Davide Faconti

0.10.0 (2025-10-13)

  • cherry picking change from #38 . Better function name Thanks \@Tanishq30052002 for the suggestions
  • tons of ROS examples and utilities
  • files renamed
  • Contributors: Davide Faconti

0.9.0 (2025-10-11)

  • fix compilation
  • fix mcap_converter
  • Contributors: Davide Faconti

0.8.0 (2025-10-09)

  • Merge branch 'main' into msadowski/release_foxglove_extension
  • Merge pull request #33 from facontidavide/refactor_ros_interface Refactor ros interface
  • fixed topic_converter
  • changes API
  • fixed benchmark
  • updated benchmarks
  • Preprare ros release (#28)
  • Contributors: Davide Faconti

0.7.0 (2025-09-19)

0.6.1 (2025-08-28)

0.5.0 (2025-06-30)

0.4.0 (2025-06-15)

  • updated README
  • Contributors: Davide Faconti

0.3.3 (2025-06-11)

0.3.1 (2025-06-10)

  • Merge branch 'main' of github.com:facontidavide/cloudini
  • Update CMakeLists.txt
  • Included ROS 2 lint testing (#3) Co-authored-by: Davide Faconti <<davide.faconti@gmail.com>>
  • Contributors: Alejandro Hernández Cordero, Davide Faconti

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_ros at Robotics Stack Exchange

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

cloudini_ros package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.0.4
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti

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/PointCloud2
  • point_cloud_interfaces/msg/CompressedPointCloud2

It is genrally more efficient than using the point_cloud_transport because the latter would:

  1. Receive a serialized DDS message.
  2. Convert that to CompressedPointCloud2.
  3. Do the actual decompression.
  4. 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

Changelog for package cloudini_ros

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 (INCLUDE_DIRS) and new-style (TARGETS) exports idiomatically. Co-Authored-By: Claude Opus 4.6 (1M context) <<noreply@anthropic.com>>
  • Contributors: Davide Faconti

1.0.2 (2026-03-04)

1.0.1 (2026-03-01)

1.0.0 (2026-02-21)

  • feat: make topic_converter composable for component container usage Build topic_converter as a shared component library with rclcpp_components, while keeping the standalone executable via EXECUTABLE directive. Intra-process comms moved into constructor so it works in both standalone and component container modes.
  • feat: add convenience API for compressing PointCloud2 directly (#58) Add SerializeCompressedPointCloud2() and ConvertToRosPointCloud2() to allow users to compress sensor_msgs::msg::PointCloud2 without the topic_converter node. Includes test_direct_publisher example node and CLAUDE.md documentation. Also removes redundant PCL_INCLUDE_DIRS from test_cloudini_subscriber target.
  • Fixed cmake issues and added some improvements (#55)
  • fix resolution profile not applied in ros_topic_converter (#49)
  • Contributors: Alireza Moayyedi, Davide Faconti, ペンギンの何か

0.11.1 (2025-12-12)

  • try fixing build in ROS
  • Contributors: Davide Faconti

0.11.0 (2025-11-29)

  • fix typo (#42)
  • add better Draco benchmarking
  • Contributors: Bastian Lampe, Davide Faconti

0.10.0 (2025-10-13)

  • cherry picking change from #38 . Better function name Thanks \@Tanishq30052002 for the suggestions
  • tons of ROS examples and utilities
  • files renamed
  • Contributors: Davide Faconti

0.9.0 (2025-10-11)

  • fix compilation
  • fix mcap_converter
  • Contributors: Davide Faconti

0.8.0 (2025-10-09)

  • Merge branch 'main' into msadowski/release_foxglove_extension
  • Merge pull request #33 from facontidavide/refactor_ros_interface Refactor ros interface
  • fixed topic_converter
  • changes API
  • fixed benchmark
  • updated benchmarks
  • Preprare ros release (#28)
  • Contributors: Davide Faconti

0.7.0 (2025-09-19)

0.6.1 (2025-08-28)

0.5.0 (2025-06-30)

0.4.0 (2025-06-15)

  • updated README
  • Contributors: Davide Faconti

0.3.3 (2025-06-11)

0.3.1 (2025-06-10)

  • Merge branch 'main' of github.com:facontidavide/cloudini
  • Update CMakeLists.txt
  • Included ROS 2 lint testing (#3) Co-authored-by: Davide Faconti <<davide.faconti@gmail.com>>
  • Contributors: Alejandro Hernández Cordero, Davide Faconti

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_ros at Robotics Stack Exchange

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

cloudini_ros package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.0.4
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti

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/PointCloud2
  • point_cloud_interfaces/msg/CompressedPointCloud2

It is genrally more efficient than using the point_cloud_transport because the latter would:

  1. Receive a serialized DDS message.
  2. Convert that to CompressedPointCloud2.
  3. Do the actual decompression.
  4. 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

Changelog for package cloudini_ros

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 (INCLUDE_DIRS) and new-style (TARGETS) exports idiomatically. Co-Authored-By: Claude Opus 4.6 (1M context) <<noreply@anthropic.com>>
  • Contributors: Davide Faconti

1.0.2 (2026-03-04)

1.0.1 (2026-03-01)

1.0.0 (2026-02-21)

  • feat: make topic_converter composable for component container usage Build topic_converter as a shared component library with rclcpp_components, while keeping the standalone executable via EXECUTABLE directive. Intra-process comms moved into constructor so it works in both standalone and component container modes.
  • feat: add convenience API for compressing PointCloud2 directly (#58) Add SerializeCompressedPointCloud2() and ConvertToRosPointCloud2() to allow users to compress sensor_msgs::msg::PointCloud2 without the topic_converter node. Includes test_direct_publisher example node and CLAUDE.md documentation. Also removes redundant PCL_INCLUDE_DIRS from test_cloudini_subscriber target.
  • Fixed cmake issues and added some improvements (#55)
  • fix resolution profile not applied in ros_topic_converter (#49)
  • Contributors: Alireza Moayyedi, Davide Faconti, ペンギンの何か

0.11.1 (2025-12-12)

  • try fixing build in ROS
  • Contributors: Davide Faconti

0.11.0 (2025-11-29)

  • fix typo (#42)
  • add better Draco benchmarking
  • Contributors: Bastian Lampe, Davide Faconti

0.10.0 (2025-10-13)

  • cherry picking change from #38 . Better function name Thanks \@Tanishq30052002 for the suggestions
  • tons of ROS examples and utilities
  • files renamed
  • Contributors: Davide Faconti

0.9.0 (2025-10-11)

  • fix compilation
  • fix mcap_converter
  • Contributors: Davide Faconti

0.8.0 (2025-10-09)

  • Merge branch 'main' into msadowski/release_foxglove_extension
  • Merge pull request #33 from facontidavide/refactor_ros_interface Refactor ros interface
  • fixed topic_converter
  • changes API
  • fixed benchmark
  • updated benchmarks
  • Preprare ros release (#28)
  • Contributors: Davide Faconti

0.7.0 (2025-09-19)

0.6.1 (2025-08-28)

0.5.0 (2025-06-30)

0.4.0 (2025-06-15)

  • updated README
  • Contributors: Davide Faconti

0.3.3 (2025-06-11)

0.3.1 (2025-06-10)

  • Merge branch 'main' of github.com:facontidavide/cloudini
  • Update CMakeLists.txt
  • Included ROS 2 lint testing (#3) Co-authored-by: Davide Faconti <<davide.faconti@gmail.com>>
  • Contributors: Alejandro Hernández Cordero, Davide Faconti

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_ros at Robotics Stack Exchange

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

cloudini_ros package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.0.4
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti

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/PointCloud2
  • point_cloud_interfaces/msg/CompressedPointCloud2

It is genrally more efficient than using the point_cloud_transport because the latter would:

  1. Receive a serialized DDS message.
  2. Convert that to CompressedPointCloud2.
  3. Do the actual decompression.
  4. 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

Changelog for package cloudini_ros

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 (INCLUDE_DIRS) and new-style (TARGETS) exports idiomatically. Co-Authored-By: Claude Opus 4.6 (1M context) <<noreply@anthropic.com>>
  • Contributors: Davide Faconti

1.0.2 (2026-03-04)

1.0.1 (2026-03-01)

1.0.0 (2026-02-21)

  • feat: make topic_converter composable for component container usage Build topic_converter as a shared component library with rclcpp_components, while keeping the standalone executable via EXECUTABLE directive. Intra-process comms moved into constructor so it works in both standalone and component container modes.
  • feat: add convenience API for compressing PointCloud2 directly (#58) Add SerializeCompressedPointCloud2() and ConvertToRosPointCloud2() to allow users to compress sensor_msgs::msg::PointCloud2 without the topic_converter node. Includes test_direct_publisher example node and CLAUDE.md documentation. Also removes redundant PCL_INCLUDE_DIRS from test_cloudini_subscriber target.
  • Fixed cmake issues and added some improvements (#55)
  • fix resolution profile not applied in ros_topic_converter (#49)
  • Contributors: Alireza Moayyedi, Davide Faconti, ペンギンの何か

0.11.1 (2025-12-12)

  • try fixing build in ROS
  • Contributors: Davide Faconti

0.11.0 (2025-11-29)

  • fix typo (#42)
  • add better Draco benchmarking
  • Contributors: Bastian Lampe, Davide Faconti

0.10.0 (2025-10-13)

  • cherry picking change from #38 . Better function name Thanks \@Tanishq30052002 for the suggestions
  • tons of ROS examples and utilities
  • files renamed
  • Contributors: Davide Faconti

0.9.0 (2025-10-11)

  • fix compilation
  • fix mcap_converter
  • Contributors: Davide Faconti

0.8.0 (2025-10-09)

  • Merge branch 'main' into msadowski/release_foxglove_extension
  • Merge pull request #33 from facontidavide/refactor_ros_interface Refactor ros interface
  • fixed topic_converter
  • changes API
  • fixed benchmark
  • updated benchmarks
  • Preprare ros release (#28)
  • Contributors: Davide Faconti

0.7.0 (2025-09-19)

0.6.1 (2025-08-28)

0.5.0 (2025-06-30)

0.4.0 (2025-06-15)

  • updated README
  • Contributors: Davide Faconti

0.3.3 (2025-06-11)

0.3.1 (2025-06-10)

  • Merge branch 'main' of github.com:facontidavide/cloudini
  • Update CMakeLists.txt
  • Included ROS 2 lint testing (#3) Co-authored-by: Davide Faconti <<davide.faconti@gmail.com>>
  • Contributors: Alejandro Hernández Cordero, Davide Faconti

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cloudini_ros at Robotics Stack Exchange