|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
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
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.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
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.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
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.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
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.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
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.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
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.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
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.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
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.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
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cloudini_ros at Robotics Stack Exchange
|
cloudini_ros package from cloudini repocloudini_lib cloudini_ros |
ROS Distro
|
Package Summary
| Version | 1.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
Maintainers
- Davide Faconti
Authors
- Davide Faconti
ROS2 specific libraries and utilities
cloudini_topic_converter
A simple node that subscribes to one of these two topic types and publishes the other:
sensor_msgs/msg/PointCloud2point_cloud_interfaces/msg/CompressedPointCloud2
It is genrally more efficient than using the point_cloud_transport because the latter would:
- Receive a serialized DDS message.
- Convert that to CompressedPointCloud2.
- Do the actual decompression.
- Convert PointCloud2 to a serialized DDS message.
Instead, we work directly with raw serialized messages, bypassing the ROS type system, skipping steps 2 and 4 in the list above.
Parameters
-
topic_input(string): name of the topic to subscribe to. -
topic_output(string): name of the topic to publish into. -
compressing(bool): true if you are subscribing to a regular pointcloud2, and you want to compress it. False if you are subscribing to a compressed topic and you want to decompress it. -
resolution(double): resolution of floating point fields in meters. Default: 0.001
Example usage
To convert a regular sensor_msgs/msg/PointCloud2 to a compressed one:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed
To decompress that topic back in to its original form:
ros2 run cloudini_ros cloudini_topic_converter --ros-args \
-p compressing:=false \
-p topic_input:=/points/compressed \
-p topic_output:=/points/decompressed
Composable Node (Component Container)
The topic converter is also available as a composable node, allowing it to be loaded into a component container for reduced overhead when running multiple nodes in the same process.
# Start a component container
ros2 run rclcpp_components component_container
# Load the topic converter as a component
ros2 component load /ComponentManager cloudini_ros CloudiniPointcloudConverter \
-p compressing:=true \
-p topic_input:=/points \
-p topic_output:=/points/compressed \
-p resolution:=0.001
Or via launch file:
from launch_ros.actions import ComposableNodeContainer, LoadComposableNodes
from launch_ros.descriptions import ComposableNode
container = ComposableNodeContainer(
name='cloudini_container',
namespace='',
package='rclcpp_components',
executable='component_container',
)
converter = LoadComposableNodes(
target_container='cloudini_container',
composable_node_descriptions=[
ComposableNode(
package='cloudini_ros',
plugin='CloudiniPointcloudConverter',
parameters=[{
'compressing': True,
'topic_input': '/points',
'topic_output': '/points/compressed',
'resolution': 0.001,
}],
),
],
)
cloudini_rosbag_converter
A command line tool that, given a rosbag (limited to MCAP format), converts
all sensor_msgs/msg/PointCloud2 topics into compressed point_cloud_interfaces/msg/CompressedPointCloud2 of vice-versa.
Encoding/decoding is faster than general-purpose compression algorithms and achieves a better compression ratio at 1mm resolution.
File truncated at 100 lines see the full file
Changelog for package cloudini_ros
1.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