在 Python 上替代 PCL 进行处理和可视化

Alternative to PCL on Python for Processing and Visualization

我正在使用 rospy 接收点云。为了处理这些点云,有一个名为 python-pcl 的包,我无法得到它 运行,因为它有很多错误且无法正常工作,Github 上有很多问题,等等。

我想知道 Python 中是否有另一个用于处理点云的库?我通过 ROS 收到点云,如下所示:

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)

从现在开始,如何在不使用 PCL 库的情况下使用 ICP 处理、可视化或注册 Pointcloud。

有一个名为 "open3D" 的 python 库,它为点云处理提供了一个稳定的平台。在此处阅读文档:http://www.open3d.org/docs/

要使其与 ROS 一起使用,您需要使用 pip 作为

安装旧版本的 open3D
pip install open3d-python==0.3.0.0

我一直在使用这个库进行点云注册,没有任何问题。

由于 ROS 尚不支持此库,因此您必须编写自己的代码以在 PointCloud2 与 Opend3D.PointCloud 之间进行转换。这可以使用 numpy 轻松完成。请参阅示例 here