3

I am using rospy to receive pointclouds. For processing these pointclouds, there is a package called python-pcl, I was unable to get it running, since it was extremely buggy and non-functional, tons of issues on Github, etc.

I wish to know if there is another library in Python for processing pointclouds? I am receiving a pointcloud over ROS as follows:

self.pointcloud_sub = rospy.Subscriber("/nerian_stereo/point_cloud", PointCloud2, self.pointcloud_cb) # get the pointcloud

def pointcloud_cb(self, scan):
        # just to test, if we receive anything
        points_list = []
        # loop and show points
        for data in pc2.read_points(scan, skip_nans=True):
            points_list.append([data[0], data[1], data[2], data[3]])
        print(points_list)

From this point on, how to process, visualize, or register Pointcloud using ICP without using PCL library.

TalhaRao_
  • 158
  • 1
  • 10
Schütze
  • 1,044
  • 5
  • 28
  • 48

1 Answers1

4

There is a python library called "open3D" which provides a stable platform for Point cloud processing. Read the docs here: http://www.open3d.org/docs/

To make it work with ROS you need to install the older version of open3D by using pip as

pip install open3d-python==0.3.0.0

I have been using this library for point cloud registration without any problems.

Since this library is not supported by ROS yet, you have to write your own code for conversion between PointCloud2 to Opend3D.PointCloud. Which can be done using numpy easily. See the examples here.

Schütze
  • 1,044
  • 5
  • 28
  • 48
TalhaRao_
  • 158
  • 1
  • 10