Skip to content

Latest commit

 

History

History
140 lines (93 loc) · 5.31 KB

README.rst

File metadata and controls

140 lines (93 loc) · 5.31 KB

pointcloudset

test status test coverage Docker release PyPi badge PyPi badge

Analyze large datasets of point clouds recorded over time in an efficient way.

Features

  • Handles point clouds over time
  • Building complex pipelines with a clean and maintainable code
newpointcloud = pointcloud.limit("x",-5,5).filter("quantile","reflectivity", ">",0.5)
  • Apply arbitrary functions to datasets of point clouds
def isolate_target(frame: PointCloud) -> PointCloud:
   return frame.limit("x",0,1).limit("y",0,1)

def diff_to_pointcloud(pointcloud: PointCloud, to_compare: PointCloud) -> PointCloud:
   return pointcloud.diff("pointcloud", to_compare)

result = dataset.apply(isolate_target).apply(diff_to_pointcloud, to_compare=dataset[0])
  • Support for large files with lazy evaluation and parallel processing

https://raw.githubusercontent.com/virtual-vehicle/pointcloudset/master/images/dask.gif

  • Support for numerical data per point (intensity, range, noise …)
  • Interactive 3D visualisation

https://raw.githubusercontent.com/virtual-vehicle/pointcloudset/master/images/plot_3d.gif

  • High level processing based on dask, pandas, open3D and pyntcloud
  • Docker image is available
  • Optimised - but not limited to - automotive lidar
  • Directly read ROS bagfiles and many pointcloud file formats
  • A command line tool to convert ROS bagfiles

Use case examples

  • Post processing and analytics of a lidar dataset recorded by ROS
  • A collection of multiple lidar scans from a terrestrial laser scanner
  • Comparison of multiple point clouds to a ground truth
  • Analytics of point clouds over time
  • Developing algorithms on a single frame and then applying them to huge datasets

Installation with pip

Install python package with pip:

pip install pointcloudset

Installation with Docker

The easiest way to get started is to use the pre-build docker tgoelles/pointcloudset or use tgoelles/pointcloudset_base to get a container with all dependencies and install pointcloudset there.

Quickstart

from pointcloudset import Dataset, PointCloud
from pathlib import Path

dataset = Dataset.from_file(Path("rosbag_file.bag"), topic="/os1_cloud_node/points", keep_zeros=False)
pointcloud = dataset[42]
pointcloud2 = PointCloud.from_file(Path("lasfile.las"))
  • Read the html documentation.
  • Have a look at the tutorial notebooks in the documentation folder
  • For even more usage examples you can have a look at the tests

Comparison to related packages

  1. ROS - bagfiles can contain many point clouds from different sensors. The downside of the format is that it is only suitable for serial access and not well suited for data analytics and post processing.
  2. pyntcloud - Only for single pointclouds. This package is used as the basis for the PointCloud object.
  3. open3d - Only for single point clouds. Excellent package, which is used for some methods on the PointCloud.
  4. pdal - Works also with pipelines on pointclouds but is mostly focused on single point cloud processing. Pointcloudset is purely in python and based on pandas dataframes. In addition pointcloudset works in parallel to process large datasets.

Citation and contact

orcid Thomas Gölles email: [email protected]

ADD link to JOSS paper here and DOI