ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Processing of point clouds generated by ROS

asked 2011-10-06 09:34:27 -0600

PriyankaP gravatar image

updated 2011-10-06 11:00:13 -0600

joq gravatar image

Hi, I'm working with ROS on object identification.

1] After ROS generates point cloud from live video, where are the point clouds stored and in what file format? how do we convert a file to PCD format?

2] How do we seperate points for the objects to be identified from the point cloud of the whole frame? Is there a filtering process for that?

3]How many seconds of live video is enough for ROS to generate appropriate pointcloud for object identification?

Thanks.. any help is appreciated!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2011-10-06 12:26:58 -0600

Daniel Canelhas gravatar image

updated 2011-10-06 12:30:56 -0600

1) think of ROS as a messaging infrastructure, like a phone company. It lets you listen to (subscribe to) messages that are being sent right now. The messages aren't "saved" anywhere, much like how words spoken on the phone aren't saved in the copper wire that transmits them. If you have a program that collects and saves messages they can be stored in any file format you like though. The ROS messages all have a formats, of course.

If you want to know the details of a particular message you can use the command

rosmsg show <message type>

In particular, for point cloud messages, you might want to look at

rosmsg show sensor_msgs/PointCloud2

If you just want to listen to a topic with this type of message and have the result saved as pcd files you can use the following command (directly in terminal). Supposing that you have the topic /camera/rgb/points where pointclouds are being published:

rosrun pcl_ros pointcloud_to_pcd input:=/camera/rgb/points _prefix:=kinect_rgb_

use ctrl-c to abort when you have enough messages as they tend to consume a fair bit of disk-space in the long run.

This will save points published on the topic /camera/rgb/points into the present working directory as kinect_rgb_xxxxxxxxxxxxx.xxxxxxxxx.pcd where the x's are time signatures generated by ROS. For more advanced programs, look at

If you're unsure about what topics are currently available, do

rostopic list

2) There are several algorithms and methods for what you describe (also known as object segmentation) none of which I could properly fit into a reply here. You'll probably find hundreds of papers on the subject at IEEEXplore or similar databases. describes one way of doing it.

3) Object identification, depending on the application/context can be done with one single frame. It's not so much a matter of how many views you have of the object as what you are extracting from the views and comparing them to. Again, much research is done on this subject.

BTW. live video from a regular camera won't give you point clouds, the message type would most likely be sensor_msgs/Image. see the output of:

rosmsg show sensor_msgs/Image
edit flag offensive delete link more

Question Tools


Asked: 2011-10-06 09:34:27 -0600

Seen: 1,460 times

Last updated: Oct 06 '11