Package symbol

cloudini_ros package from cloudini repo

cloudini_lib cloudini_ros

ROS Distro
humble

Package Summary

Version 1.0.0
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description Pointcloud compression library
Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
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.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

0.3.0 (2025-06-03)

0.2.0 (2025-05-31)

  • fixes
  • add efficient "bridge" between compressed and regular pointclouds
  • add license
  • Contributors: Davide Faconti

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.0
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description Pointcloud compression library
Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
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.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

0.3.0 (2025-06-03)

0.2.0 (2025-05-31)

  • fixes
  • add efficient "bridge" between compressed and regular pointclouds
  • add license
  • Contributors: Davide Faconti

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.0
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description Pointcloud compression library
Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
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.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

0.3.0 (2025-06-03)

0.2.0 (2025-05-31)

  • fixes
  • add efficient "bridge" between compressed and regular pointclouds
  • add license
  • Contributors: Davide Faconti

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.0
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

Main library of Cloudini, the pointcloud compression library

Maintainers

  • Davide Faconti

Authors

  • Davide Faconti

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.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

0.3.0 (2025-06-03)

0.2.0 (2025-05-31)

  • fixes
  • add efficient "bridge" between compressed and regular pointclouds
  • add license
  • Contributors: Davide Faconti

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.0
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description Pointcloud compression library
Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
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.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

0.3.0 (2025-06-03)

0.2.0 (2025-05-31)

  • fixes
  • add efficient "bridge" between compressed and regular pointclouds
  • add license
  • Contributors: Davide Faconti

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.0
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description Pointcloud compression library
Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
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.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

0.3.0 (2025-06-03)

0.2.0 (2025-05-31)

  • fixes
  • add efficient "bridge" between compressed and regular pointclouds
  • add license
  • Contributors: Davide Faconti

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.0
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description Pointcloud compression library
Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
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.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

0.3.0 (2025-06-03)

0.2.0 (2025-05-31)

  • fixes
  • add efficient "bridge" between compressed and regular pointclouds
  • add license
  • Contributors: Davide Faconti

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.0
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description Pointcloud compression library
Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
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.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

0.3.0 (2025-06-03)

0.2.0 (2025-05-31)

  • fixes
  • add efficient "bridge" between compressed and regular pointclouds
  • add license
  • Contributors: Davide Faconti

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.0
License Apache
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description Pointcloud compression library
Checkout URI https://github.com/facontidavide/cloudini.git
VCS Type git
VCS Version main
Last Updated 2026-02-24
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.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

0.3.0 (2025-06-03)

0.2.0 (2025-05-31)

  • fixes
  • add efficient "bridge" between compressed and regular pointclouds
  • add license
  • Contributors: Davide Faconti

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