Code Monkey home page Code Monkey logo

Comments (7)

holger-motional avatar holger-motional commented on August 16, 2024

Hi,

Lidar: Invalid points have been left out for performance reasons.
Radar: You can define a number of flags to filter the points by: https://github.com/nutonomy/nuscenes-devkit/blob/master/python-sdk/nuscenes/utils/data_classes.py#L275

Let me know if you have any more questions.

from nuscenes-devkit.

Lapayo avatar Lapayo commented on August 16, 2024

Thanks for your answer, however I am not quite sure, if I understood it correctly. I am talking about the Lidar Pointclouds:

I am loading the pointcloud directly using numpy (as in LidarPointCloud) and the number of floats is always a multiple of channels * #rings (5 * 32)
But if invalid points would have been dropped this should not always be the case.

Additionally, if I reshape the pointclouds scan.reshape(-1, 32, 5) the following statement holds scan[:,i,4] == i , which means we seem to have the same amount of points in every row. This seems a bit contrary to dropping single points from the cloud.
Or are entire columns dropped if one of the detections failed?

from nuscenes-devkit.

oscar-nutonomy avatar oscar-nutonomy commented on August 16, 2024

@Lapayo : I'm not sure if I understand you, but can you check this code:

from nuscenes.utils.data_classes import LidarPointCloud
from nuscenes import NuScenes

nusc = NuScenes('v1.0-mini')

for sample_data in nusc.sample_data[::100]:
    if sample_data['channel'] == 'LIDAR_TOP':
        pc = LidarPointCloud.from_file(nusc.get_sample_data_path(sample_data['token']))
        cnt = pc.nbr_points()
        assert cnt%(32*5) == 0

When running this the assert fails on the fourth PC. Wouldn't that suggest that we do indeed drop invalid points?

from nuscenes-devkit.

Lapayo avatar Lapayo commented on August 16, 2024

@oscar-nutonomy Thanks for your answer! However, the PointCloud.nbr_points() methods does only return the number of points and does not include the channel dimension.

In my equation above I was refering to a point cloud directly loaded using numpy. Using the LidarPointCloud class the correct assertion should be just assert cnt%32 == 0 which does not fail (on the mini dataset).

This also implies that there are no (single) points dropped.

I really appreciate your help and I hope to get this resolved. :-)

from nuscenes-devkit.

oscar-nutonomy avatar oscar-nutonomy commented on August 16, 2024

@Lapayo . You are right! Thanks. We will have to look into this closer.

from nuscenes-devkit.

Lapayo avatar Lapayo commented on August 16, 2024

Hey,
from the photos I concluded that you are using the HDL-32E Lidar, is this correct?
The manual for the 32E says:

Note: The minimum return distance for the HDL-32E is approximately 1 meter. Ignore returns closer than this

(https://velodynelidar.com/lidar/products/manual/63-9113%20HDL-32E%20manual_Rev%20G.pdf)

In the given point clouds I found multiple points with distances below 1.0 meters. Some of those seem to be correct like points from the car roof. But other points < 1.0 are outliers e.g. on car surfaces, where the car is farer away than 1.0 meters.

Probably, if this is the correct manual for the Lidar, dropping all the points < 1.0m could fix the problem (at least for my use case)

from nuscenes-devkit.

holger-motional avatar holger-motional commented on August 16, 2024

For more information on the lidar, please contact [email protected].
I agree on the suggestion to filter points by minimum distance. Here is an example in our devkit.

from nuscenes-devkit.

Related Issues (20)

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.