Coder Social home page Coder Social logo

virtual-vehicle / pointcloudset Goto Github PK

View Code? Open in Web Editor NEW
43.0 4.0 7.0 94.49 MB

Efficient analysis of large datasets of point clouds recorded over time

Home Page: https://virtual-vehicle.github.io/pointcloudset/

License: MIT License

Makefile 0.64% Dockerfile 1.23% Python 98.00% Shell 0.14%
python 3d point-cloud pointcloud lidar lidar-point-cloud ros ouster velodyne-sensor rosbag

pointcloudset's People

Contributors

birgitschlager avatar github-actions[bot] avatar grisly00 avatar hechth avatar tgoelles avatar tobiashammer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

pointcloudset's Issues

JOSS Review: Handling large files

Describe the bug
Plotting large point clouds (>500,000 points) seems to be taking up a lot of RAM (>8gb).

To Reproduce
Steps to reproduce the behavior:

  1. Load large point cloud (I can provide an example file)
  2. Call plot function.

Expected behavior
It should be stated up to which sizes can be handled reasonably or the program should provide options for visualization that make it easier, like random subsampling or spatial subsampling to uniform density.

Desktop (please complete the following information):

  • OS: Windows 10 16gb RAM i5 quad core with hyperthreading
  • Version: 0.2.3

JOSS Review: Reasoning behind multiple dockerfiles

I had to make some minor adjustments to build the normal Dockerfile on my machine - I just wanted to ask what is the reasoning behind having a Dockerfile that only installs the dependencies and then having one more that uses the tgoelles/pointcloudset_base:latest base image to install the actual tool on top - would you explain the reason for that? To me it seems like it would be a lot easier to just have one Dockerfile which contains the installed package.

Also, the paths in the main Dockerfile seem a bit off - is that due to the automated CI actions and how they transform the paths?

FileNotFoundError in Working_with_kitti_dataset tutorial

I am writing this issue as a JOSS reviewer. See more info here: openjournals/joss-reviews#3471.

The 'Working_with_kitti_dataset' gives the following error:
FileNotFoundError: [Errno 2] No such file or directory: '/pointcloudset/tutorial_notebooks/kitti_2011_09_26_drive_0002_synced.bag'

I am using the pointcloudset docker container. Since the python code downloads the data, I'd expect this to work 'out-of-the-box', without the need to configure the paths manually. The bag file seems to be missing entirely.

test discovery error in VS code- caused by rospy logging

Vscode fails to discover the tests, due to some strange behaviour of rospy with logging,
vscode runs pytest --collect-only to find the tests.
This produces an error.
Work arround is:
Ignore the message and use the Python Test Explorer for Visual Studio Code extension.
See also the open issue:
pytest-dev/pytest#5502
I tried all the solutions there but none did work.
Another solution would be to get rid of rospy in the package, and use it only in the command line tool. This would mean no more direct loading of rosbag files.

add animation of the dataset

Is your feature request related to a problem? Please describe.
make a basic animation of a dataset with dataset.animate.

Describe the solution you'd like
It would be great to have it interactive with a slider for the frames

Describe alternatives you've considered
maybe without the slider

Additional context
plotly express has an animate feature, but this does not fit the problem

Saving Datasets with large TLS individual frames

Is your feature request related to a problem? Please describe.
Currently saving of Datasets which contain large (>a few GB, per frame) is not possible.

Describe the solution you'd like
the same handling as with Datasets from ROS bag files.

Describe alternatives you've considered
There is no real alternative.

Additional context
Splitting up individual frames with dask should be possible but need some restructuring of the whole read and write mechanisms.

conda build for github actions fails

Therefore CI tests are not working at the moment.

Seems like installing the pip dependencies takes forever and github actions stops after 6 hours.

Possible solutions

  • fix dependency issues between conda and pip packages
  • use the tgoelles/pointcloudset_base docker image for testing => build the base image onece and then use it for development and CI

see tg_test_conda_pip branch for develpment

georeferenced pointcloud

Is your feature request related to a problem? Please describe.
Absolute positioning of pointcloud

Describe the solution you'd like
use DGPS + IMU data recorded with ROS

Describe alternatives you've considered
using cloudcompare and other tools such as Riscan and export it as las file

Additional context
geopandas could be the solution

Add support for rosbag2 version 7

Sadly it is not possible to use the latest .mcap file format.
Here the whole Traceback:

Traceback (most recent call last): File "/pcd_intensities.py", line 64, in <module> pcd = pointcloudset.Dataset.from_file(rosfile_path,topic=topic) File "/opt/conda/lib/python3.10/site-packages/pointcloudset/dataset.py", line 114, in from_file res = DATASET_FROM_FILE[ext](file_path, ext=ext, **kwargs) File "/opt/conda/lib/python3.10/site-packages/pointcloudset/io/dataset/ros.py", line 117, in dataset_from_ros with Reader(bagfile.as_posix()) as reader: File "/opt/conda/lib/python3.10/site-packages/rosbags/rosbag2/reader.py", line 105, in __init__ raise ReaderError(f'Rosbag2 version {ver} not supported; please report issue.') rosbags.rosbag2.errors.ReaderError: Rosbag2 version 7 not supported; please report issue.

If possible, please add the support.

JOSS Review: Publish package via conda

Since the package already has an environment.yaml file, adding a conda recipe and uploading it to conda forge would be a very nice and rather easy addition.

  • Add conda recipe meta.yaml
  • Move conda related files (environment.yaml, meta.yaml) to dedicated conda folder
  • Upload package to conda-forge

pandas 2.0 support

It is recommended that users with existing code upgrade to pandas 1.5.3 before they upgrade to pandas 2, and make sure their code does not generate FutureWarning or DeprecationWarning messages.

test if it runs with pandas 2.0

JOSS Review: Statement of need

The statement of need focuses more on the advances in LIDAR technology than the problems in related software - only the fact that the technology is advancing doesn't justify the need for more software.

Why is accessing time-series point cloud data important? Why do the current packages not suffice for this task? How does this package circumvent these problems? How does pointcloudset combine pyntcloud and ROS to provide a better software solution?

Also, can you find any scientific publication for which this software would be beneficial or where you could demonstrate its purpose? Also, for which specific problem (i.e autonomous driving, object detection in point clouds) are you developing the software? If it has no specific purpose, how does it function as a general framework for various applications (clustering, general filtering, feature detection -> dense areas, planes, etc.) and can you give a simple example where such a general framework (in connection with the point cloud series aspect) can be used?

Load Ouster lidar raw data (lidar_packets) from ROS2 bagfile

When using a Ouster lidar with ROS, in some use cases it makes sense to record raw lidar packets instead of the standard Pointcloud2 messages as this saves computational resources and disk space while recording.
To work with the data it is currently necessary to replay the ROS bagfile and record the converted messages, which is cumbersome and error prone.

Therefore it would be a great feature to load the lidar packets directly into pointcloudset. In principle, this should be possible with the Python Ouster SDK.

For a discussion on the topic and a starting point to write a possible implementation see: ouster-lidar/ouster_example#524

documentation with updated notebooks and plotly

Currently the notebooks are not updated by sphinx.

This is due to 2 reasons:

  1. Github actions and notebook kernels.
    Kernel "base" is not in the environment of the current github action for doc.

  2. Plotly plots are not in the html documentation
    There is only an empty spot. The problem is there on the local docker environment and also with github actions

Suggestions for the README

Related to openjournals/joss-reviews#3471.

I'd recommend to add links to refer to some things mentioned in the readme. For example:

No default tag latest is defined for the https://hub.docker.com/repository/docker/tgoelles/pointcloudset image, so a docker pull tgoelles/pointcloudset will not work. A tag would need to be specified by the user. Is this done intentionally? In that case I think that it would be good to write the exact docker pull command in the readme.

The Quickstart example shows a code snippet that refers to rosbag_file.bag and lasfile.las. Are these files available somewhere? Would it be possible to include a quickstart example with existing example files - and ideally - some example output that includes the visualizations as shown in the README?

JOSS Review: Include descriptions of contributions in the paper

From the repository contributions, it is not clear what was the contribution of all individual authors. A short paragraph stating who did what (for example A.B. developed the concepts, C.D. developed the software, E.F. wrote the manuscript) would provide clarity inside the manuscript.

reading ROS2 files

reading ROS2 files

No difference for the user.

  • test file
  • basic reading
  • delete all rosbag dependencies
  • paramterize tests to work on both ROS1 bagfiles and ROS2 directory
  • setup CLI tests also for ROS2

Update documentation and docker image

The ROS2 Support works great! Two things that would be good to change now:

  • It would be just good to update the docker image on docker hub to use Pointcloudset 0.9.0
  • In the documentation: add the information that, when using ros2, you should use the folder where the metadata and the ros2 bag file is and not the file itself. (Or change the code behavior to look for the metadata file in the same folder as the ros2bag file.)

JOSS Review: State of the field

Have you had a look at python-pcl? I personally haven't worked much with PCL, it is quite a beast in C++ so I usually prefer CloudCompare for that, but the python bindings of PCL might be interesting.

datashader plots

plotting with data shaders. Might be useful to get an overview.
Here are some hints how it works together with poorly: https://plotly.com/python/datashader/

Describe the solution you'd like
A plot method on Datasets maybe with differente views similar to CAD

Describe alternatives you've considered
make it simple to generate data shader plots

Additional context
@Grisly00 did some plots already

fix agg

dataset.agg({"x" : ["min","max","mean","std"]}) of the testbag data does not work.
The same command works in pandas and is part of the documentation so it needs to be part of the test-suite and work as expected

better documetion structure of API

The auto generated structure is not in line with the actual order use of the package. It needs to be better structured.
It needs to be structured according to dataset and pointcloud objects.

Dataset with empty pointclouds

Saving a dataset with an empty frame results in erros. Also an empty frame in a dataset results in a warning from pyntcloud

To Reproduce
Steps to reproduce the behavior:
Apply a function which results in an empty frame and try to save it

warnings from pyntcloud

opt/conda/lib/python3.8/site-packages/pyntcloud/core_class.py:670: RuntimeWarning:
Mean of empty slice.

repeated many times for a single frame

Expected behavior
A clear and concise description of what you expected to happen.
Dataset can handle empty frames and can also read and write them

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.