pointcloudset
pointcloudset: Efficient Analysis of Large Datasets of Point Clouds Recorded Over Time - Published in JOSS (2021)
Science Score: 100.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 7 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: joss.theoj.org -
✓Committers with academic emails
1 of 11 committers (9.1%) from academic institutions -
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Keywords
4d-point-cloud
convert
las
lidar
lidar-point-cloud
livox
open3d
ouster
point-cloud
pointcloud
python
riegl
ros
ros2
rosbag
rostopic
time-series
time-series-analysis
velodyne-sensor
Scientific Fields
Artificial Intelligence and Machine Learning
Computer Science -
62% confidence
Last synced: 4 months ago
·
JSON representation
·
Repository
Efficient analysis of large datasets of point clouds recorded over time
Basic Info
- Host: GitHub
- Owner: virtual-vehicle
- License: mit
- Language: Python
- Default Branch: master
- Homepage: https://virtual-vehicle.github.io/pointcloudset/
- Size: 105 MB
Statistics
- Stars: 50
- Watchers: 4
- Forks: 8
- Open Issues: 15
- Releases: 9
Topics
4d-point-cloud
convert
las
lidar
lidar-point-cloud
livox
open3d
ouster
point-cloud
pointcloud
python
riegl
ros
ros2
rosbag
rostopic
time-series
time-series-analysis
velodyne-sensor
Created over 4 years ago
· Last pushed 7 months ago
Metadata Files
Readme
Changelog
License
Citation
README.rst
pointcloudset
=========================================
*Analyze large datasets of point clouds recorded over time in an efficient way.*
.. image:: https://github.com/virtual-vehicle/pointcloudset/actions/workflows/tests_docker.yml/badge.svg
:target: https://github.com/virtual-vehicle/pointcloudset/actions/workflows/tests_docker.yml
:alt: test status
.. image:: images/coverage.svg
:target: https://github.com/virtual-vehicle/pointcloudset/actions/workflows/tests.yml
:alt: test coverage
.. image:: https://github.com/virtual-vehicle/pointcloudset/actions/workflows/doc.yml/badge.svg
:target: https://virtual-vehicle.github.io/pointcloudset/
:alt: Documentation Status
.. image:: https://github.com/virtual-vehicle/pointcloudset/actions/workflows/docker.yml/badge.svg
:target: https://hub.docker.com/repository/docker/tgoelles/pointcloudset
:alt: Docker
.. image:: https://badge.fury.io/py/pointcloudset.svg
:target: https://badge.fury.io/py/pointcloudset
:alt: PyPi badge
.. image:: https://pepy.tech/badge/pointcloudset/month
:target: https://pepy.tech/project/pointcloudset
:alt: PyPi badge
.. image:: https://joss.theoj.org/papers/10.21105/joss.03471/status.svg
:target: https://joss.theoj.org/papers/10.21105/joss.03471#
:alt: JOSS badge
.. image:: https://img.shields.io/badge/code%20style-ruff-000000.svg
:target: https://github.com/astral-sh/ruff
:alt: code style ruff
.. inclusion-marker-do-not-remove
`Code`_ | `Documentation`_
.. _Code: https://github.com/virtual-vehicle/pointcloudset
.. _Documentation: https://virtual-vehicle.github.io/pointcloudset/
Features
################################################
* Handles point clouds over time
* Directly read ROS files and many pointcloud file formats.
* Generate a dataset from multiple pointclouds. For example from thousands of .las files.
* Building complex pipelines with a clean and maintainable code
.. code-block:: python
newpointcloud = pointcloud.limit("x",-5,5).filter("quantile","reflectivity", ">",0.5)
* Apply arbitrary functions to datasets of point clouds
.. code-block:: python
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])
* Includes powerful aggregation method *agg* similar to pandas
.. code-block:: python
dataset.agg(["min","max","mean","std"])
* Support for large files with lazy evaluation and parallel processing
.. image:: https://raw.githubusercontent.com/virtual-vehicle/pointcloudset/master/images/dask.gif
:width: 600
* Support for numerical data per point (intensity, range, noise …)
* Interactive 3D visualisation
.. image:: https://raw.githubusercontent.com/virtual-vehicle/pointcloudset/master/images/tree.gif
:width: 600
* High level processing based on dask, pandas, open3D and pyntcloud
* Docker image is available
* Optimised - but not limited to - automotive lidar
* A command line tool to convert ROS 1 & 2 files
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:
.. code-block:: console
pip install pointcloudset
Installation with Docker
################################################
The easiest way to get started is to use the pre-build docker `tgoelles/pointcloudset`_.
.. _tgoelles/pointcloudset: https://hub.docker.com/repository/docker/tgoelles/pointcloudset
Quickstart
################################################
Reading ROS1 or ROS2 files:
.. code-block:: python
import pointcloudset as pcs
from pathlib import Path
import urllib.request
urllib.request.urlretrieve(
"https://github.com/virtual-vehicle/pointcloudset/raw/master/tests/testdata/test.bag", "test.bag"
)
dataset = pcs.Dataset.from_file(Path("test.bag"), topic="/os1_cloud_node/points", keep_zeros=False)
pointcloud = dataset[1]
pointcloud.plot("x", hover_data=True)
You can also generate a dataset from multiple pointclouds form a large variety or formats like las, pcd, csv and more.
.. code-block:: python
import pointcloudset as pcs
from pathlib import Path
import urllib.request
urllib.request.urlretrieve(
"https://github.com/virtual-vehicle/pointcloudset/raw/master/tests/testdata/las_files/test_tree.las",
"test_tree.las",
)
urllib.request.urlretrieve(
"https://github.com/virtual-vehicle/pointcloudset/raw/master/tests/testdata/las_files/test_tree.pcd",
"test_tree.pcd",
)
las_pc = pcs.PointCloud.from_file(Path("test_tree.las"))
pcd_pc = pcs.PointCloud.from_file(Path("test_tree.pcd"))
dataset = pcs.Dataset.from_instance("pointclouds", [las_pc, pcd_pc])
pointcloud = dataset[1]
pointcloud.plot("z", hover_data=True)
* 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
.. _html documentation: https://virtual-vehicle.github.io/pointcloudset/
.. _tutorial notebooks: https://github.com/virtual-vehicle/pointcloudset/tree/master/doc/sphinx/source/tutorial_notebooks
CLI to convert ROS1 and ROS2 files: pointcloudset convert
##########################################################
The package includes a powerful CLI to convert pointclouds in ROS1 & 2 files into formats like pointcloudset and a folder with csv or las.
It is capable of handling both mcap and db3 ROS2 files.
.. code-block:: console
pointcloudset convert test.bag --output-format las --output-dir converted_las
.. image:: https://raw.githubusercontent.com/virtual-vehicle/pointcloudset/master/images/cli_demo.gif
:width: 600
You can view PointCloud2 messages with
.. code-block:: console
pointcloudset topics test.bag
Tipp: If you have uv installed you can simply run:
.. code-block:: console
uvx pointcloudset --help
Comparison to related packages
################################################
#. `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.
#. `pyntcloud `_ - Only for single point clouds. This package is used as the basis for the
PointCloud object.
#. `open3d `_ - Only for single point clouds. Excellent package, which is used for some
methods on the PointCloud.
#. `pdal `_ - Works also with pipelines on point clouds 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| image:: https://orcid.org/sites/default/files/images/orcid_16x16.png
:target: https://orcid.org/0000-0002-3925-6260>
|orcid| `Thomas Gölles `_
email: thomas.goelles@v2c2.at
Please cite our `JOSS paper`_ if you use pointcloudset.
.. _JOSS paper: https://joss.theoj.org/papers/10.21105/joss.03471#
.. code-block:: bib
@article{Goelles2021,
doi = {10.21105/joss.03471},
url = {https://doi.org/10.21105/joss.03471},
year = {2021},
publisher = {The Open Journal},
volume = {6},
number = {65},
pages = {3471},
author = {Thomas Goelles and Birgit Schlager and Stefan Muckenhuber and Sarah Haas and Tobias Hammer},
title = {`pointcloudset`: Efficient Analysis of Large Datasets of Point Clouds Recorded Over Time},
journal = {Journal of Open Source Software}
}
Owner
- Name: Virtual Vehicle
- Login: virtual-vehicle
- Kind: organization
- Location: Inffeldgasse 21a. 8010 Graz, Austria
- Website: https://www.v2c2.at
- Twitter: VIRTUAL_VEHICLE
- Repositories: 1
- Profile: https://github.com/virtual-vehicle
VIRTUAL VEHICLE Research GmbH
JOSS Publication
pointcloudset: Efficient Analysis of Large Datasets of Point Clouds Recorded Over Time
Published
September 28, 2021
Volume 6, Issue 65, Page 3471
Authors
Birgit Schlager
Virtual Vehicle Research GmbH, Inffeldgasse 21A, 8010 Graz, Austria, Graz University of Technology, Rechbauerstrasse 12, 8010 Graz, Austria
Virtual Vehicle Research GmbH, Inffeldgasse 21A, 8010 Graz, Austria, Graz University of Technology, Rechbauerstrasse 12, 8010 Graz, Austria
Stefan Muckenhuber
Virtual Vehicle Research GmbH, Inffeldgasse 21A, 8010 Graz, Austria, University of Graz, Heinrichstrasse 36, 8010 Graz, Austria
Virtual Vehicle Research GmbH, Inffeldgasse 21A, 8010 Graz, Austria, University of Graz, Heinrichstrasse 36, 8010 Graz, Austria
Sarah Haas
Virtual Vehicle Research GmbH, Inffeldgasse 21A, 8010 Graz, Austria
Virtual Vehicle Research GmbH, Inffeldgasse 21A, 8010 Graz, Austria
Tobias Hammer
Virtual Vehicle Research GmbH, Inffeldgasse 21A, 8010 Graz, Austria
Virtual Vehicle Research GmbH, Inffeldgasse 21A, 8010 Graz, Austria
Tags
lidar point cloud ROSCitation (CITATION.cff)
ff-version: 1.2.0
message: "If you use this software, please cite it as below."
preferred-citation:
type: article
authors:
- family-names: "Goelles"
given-names: "Thomas"
- family-names: "Schlager"
given-names: "Birgit"
- family-names: "Muckenhuber"
given-names: "Stefan"
- family-names: "Haas"
given-names: "Sarah"
- family-names: "Hammer"
given-names: "Tobias"
journal: "Journal of Open Source Software"
volume: 6
issue: 65
start: 3471
end: 3471
title: "`pointcloudset`: Efficient Analysis of Large Datasets of Point Clouds Recorded Over Time"
url: "https://doi.org/10.21105/joss.03471"
doi: "10.21105/joss.03471"
year: 2021
GitHub Events
Total
- Create event: 6
- Release event: 3
- Issues event: 12
- Watch event: 7
- Delete event: 4
- Issue comment event: 8
- Push event: 81
- Pull request event: 7
- Fork event: 1
Last Year
- Create event: 6
- Release event: 3
- Issues event: 12
- Watch event: 7
- Delete event: 4
- Issue comment event: 8
- Push event: 81
- Pull request event: 7
- Fork event: 1
Committers
Last synced: 5 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Thomas Gölles | t****s@g****m | 1,080 |
| thomasgoelles | t****s@v****t | 313 |
| Birgit Schlager | b****r@v****t | 99 |
| github-actions[bot] | g****] | 8 |
| stefanmuckenhuber | s****r@v****t | 8 |
| Sarah Haas | s****s@v****t | 7 |
| tobiashammer | t****r@v****t | 6 |
| Christoph Gaisberger | c****r@u****t | 4 |
| tobiashammer | h****s@g****e | 2 |
| hechth | h****t@r****z | 2 |
| tobiashammer | t****r@v****t | 2 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 42
- Total pull requests: 41
- Average time to close issues: 5 months
- Average time to close pull requests: 2 days
- Total issue authors: 6
- Total pull request authors: 8
- Average comments per issue: 1.6
- Average comments per pull request: 0.32
- Merged pull requests: 39
- Bot issues: 0
- Bot pull requests: 1
Past Year
- Issues: 6
- Pull requests: 5
- Average time to close issues: about 21 hours
- Average time to close pull requests: about 1 hour
- Issue authors: 1
- Pull request authors: 2
- Average comments per issue: 0.33
- Average comments per pull request: 0.0
- Merged pull requests: 4
- Bot issues: 0
- Bot pull requests: 1
Top Authors
Issue Authors
- tgoelles (27)
- hechth (9)
- RonaldEnsing (2)
- mrrevillo0815 (2)
- dependabot[bot] (1)
- Grisly00 (1)
- tobiashammer (1)
Pull Request Authors
- tgoelles (33)
- hugoledoux (2)
- Grisly00 (2)
- birgitschlager (1)
- tobiashammer (1)
- hechth (1)
- dependabot[bot] (1)
- danielskatz (1)
Top Labels
Issue Labels
enhancement (9)
documentation (4)
bug (4)
docker (2)
TLS (1)
wontfix (1)
URGENT (1)
dependencies (1)
Pull Request Labels
dependencies (1)
Packages
- Total packages: 2
-
Total downloads:
- pypi 71 last-month
-
Total dependent packages: 0
(may contain duplicates) -
Total dependent repositories: 1
(may contain duplicates) - Total versions: 50
- Total maintainers: 1
proxy.golang.org: github.com/virtual-vehicle/pointcloudset
- Documentation: https://pkg.go.dev/github.com/virtual-vehicle/pointcloudset#section-documentation
- License: mit
-
Latest release: v0.11.0
published 7 months ago
Rankings
Dependent packages count: 6.5%
Average: 6.7%
Dependent repos count: 6.9%
Last synced:
4 months ago
pypi.org: pointcloudset
Analyze large datasets of point clouds recorded over time in an efficient way
- Documentation: https://virtual-vehicle.github.io/pointcloudset/
- License: MIT License
-
Latest release: 0.11.0
published 7 months ago
Rankings
Dependent packages count: 10.1%
Stargazers count: 10.5%
Forks count: 13.3%
Average: 14.5%
Downloads: 16.9%
Dependent repos count: 21.5%
Maintainers (1)
Last synced:
4 months ago
Dependencies
.github/workflows/doc.yml
actions
- actions/checkout v2 composite
- crazy-max/ghaction-github-pages v2 composite
.github/workflows/docker.yml
actions
- actions/checkout v2 composite
- docker/build-push-action v2 composite
- docker/login-action v1 composite
- docker/setup-buildx-action v1 composite
- docker/setup-qemu-action v1 composite
.github/workflows/publish_on_pypi.yml
actions
- actions/checkout v2 composite
- pypa/gh-action-pypi-publish release/v1 composite
.github/workflows/tests_docker.yml
actions
- actions/checkout v2 composite
- ad-m/github-push-action master composite
- tj-actions/verify-changed-files v6 composite
tests/testdata/kitti_velodyne/kitti_2011_09_26_drive_0002_synced/meta.json
cpan
pyproject.toml
pypi
- dask >=2023.11.0
- fastparquet *
- ipywidgets *
- laspy *
- numpy <2
- open3d >=0.16.0
- pandas *
- plotly *
- pyntcloud *
- rich *
- rosbags >=0.9.15
- typer *
uv.lock
pypi
- 177 dependencies