我正在使用rospy
接收pointclouds。为了处理这些pointclouds,有一个名为python-pcl
的软件包,我无法让它运行,因为它非常错误且无法运行,Github上有大量问题,等等。
我想知道Python中是否有另一个用于处理pointclouds的库?我收到的关于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库,它为Point云处理提供了一个稳定的平台。阅读文档:http://www.open3d.org/docs/
要使它与ROS一起使用,您需要使用pip as安装旧版本的open3D
pip install open3d-python==0.3.0.0
我一直在使用这个库进行点云注册而没有任何问题。
由于ROS尚不支持此库,因此您必须编写自己的代码以便在PointCloud2和Opend3D.PointCloud之间进行转换。哪个可以轻松地使用numpy。参见示例here。