Kailthen / pypcd4

Read and write PCL .pcd files in python

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

pypcd4

Description

pypcd4 is a modern reimagining of the original pypcd library, offering enhanced capabilities and performance for working with Point Cloud Data (PCD) files.

This library builds upon the foundation laid by the original pypcd while incorporating modern Python3 syntax and methodologies to provide a more efficient and user-friendly experience.

Install

You can install pypcd4 via pip,

pip install pypcd4

How to use

Import pypcd4

from pypcd4 import PointCloud

Read from .pcd file

pc: PointCloud = PointCloud.from_path("xyzi.pcd")

PointCloud -> NumPy array

array: np.ndarray = pc.numpy()

array.shape
# (1000, 4)

NumPy array -> PointCloud

# Depends on number of features of your array

# If PointXYZI,
pc = PointCloud.from_xyzi_points(array)

# If PointXYZL,
pc = PointCloud.from_xyzl_points(array, label_type=np.uint32)

ROS PointCloud2 Message -> PointCloud

Added in v0.4.0

def callback(msg):
    pc = PointCloud.from_msg(msg)

    pc.fields
    # ("x", "y", "z", "intensity", "ring", "time")

Create custom conversion method

If you cannot find preferred point type in pre-defined conversion methods, you can create it easily like,

fields = ("x", "y", "z", "intensity", "new_field")
types = (np.float32, np.float32, np.float32, np.float32, np.float64)

pc = PointCloud.from_points(array, fields, types)

Save as .pcd file

pc.save("nice_point_cloud.pcd")

License

The library was rewritten and does not borrow any code from the original pypcd library. Since it was heavily inspired by the original author's work, we extend his original BSD 3-Clause License and include his Copyright notice.

TODO

  • Support ROS message conversion
    • ROS message -> PointCloud
    • PointCloud -> ROS message
  • Visualization

About

Read and write PCL .pcd files in python

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


Languages

Language:Python 100.0%