arnoldfychen / point_cloud_io

ROS nodes to read and write point clouds from and to files (e.g. ply, vtk).

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Point Cloud IO


These are two simple ROS point cloud helper nodes. read reads a point cloud from file (ply or vtk) and publishes it as a sensor_msgs/PointCloud2 message. write subscribes to a sensor_msgs/PointCloud2 topic and writes received messages to seperate files (ply, pcd).

For visualization, make sure to set the Decay Time in the PointCloud2 tab in rviz to a high number to get the point cloud visible for a long time.

This is research code, expect that it changes often and any fitness for a particular purpose is disclaimed.

Author: Péter Fankhauser, Remo Diethelm
Affiliation: ANYbotics
Maintainer: Remo Diethelm,

This projected was initially developed at ETH Zurich (Autonomous Systems Lab & Robotic Systems Lab).

This work is conducted as part of ANYmal Research, a community to advance legged robotics.

The source code is released under a BSD 3-Clause license.



This software is built on the Robot Operating System (ROS), which needs to be installed first. Additionaly, the it depends on following software:


In order to build Point Cloud IO, clone the latest version from this repository into your catkin workspace and compile the package using ROS.

cd ~/catkin_workspace/src
git clone
cd ../
catkin build point_cloud_io

Note: building the tool with support for the VTK file format is disabled by default. To enable it, run catkin build point_cloud_io --cmake-args -DBUILD_WITH_VTK_SUPPORT=True instead.


To create your own launch-file, you can use the examples from point_cloud_io/launch/....


Load and publish a ply or vtk file with

rosrun point_cloud_io read _file_path:=/home/user/my_point_cloud.ply _topic:=/my_topic _frame:=/sensor_frame

Optionally, you can also add _rate:=1.0 to have the node publish your point cloud at the specified rate.


Subscribe and save point clouds to a ply file with

rosrun point_cloud_io write _topic:=/your_topic _folder_path:=/home/user/my_point_clouds

Optionally, you can set parameters to fit the point cloud file names to your needs:

  • _file_prefix:=my_prefix (default: "point_cloud")
  • _file_ending:=my_ending (default: "ply", currently only format which is supported for writing)
  • _add_counter_to_path:=false (default: true)
  • _add_frame_id_to_path:=true (default: false)
  • _add_stamp_sec_to_path:=true (default: false)
  • _add_stamp_nsec_to_path:=true (default: false)

Bugs & Feature Requests

Please report bugs and request features using the Issue Tracker.


ROS nodes to read and write point clouds from and to files (e.g. ply, vtk).

License:BSD 3-Clause "New" or "Revised" License


Language:C++ 82.9%Language:CMake 17.1%