RaDelft / RaDelft-Dataset

Code for the RaDelft Dataset
Other
17 stars 3 forks source link

radar data in the rosDS #4

Closed HYY-ying closed 1 month ago

HYY-ying commented 2 months ago

Hello! I wonder how you got the radar point cloud data in RaDelft/Scene1/rosDS/radar_ososos, why are there so many points in each point cloud file?

HYY-ying commented 2 months ago

And how can I convert coordinates between sensors?

IgnacioRoldan commented 2 months ago

The radar point clouds in the folder radar_ososos are generated with the code provided in signal_processing_matlab/generatePointCloud.m. It is basically a 2D OS-CFAR detector in range-azimuth followed by an OS-CFAR in Doppler. The number of points depends on the probability of a false alarm you set, but in general, the results of the OS-CFAR are not great in this case. The point cloud generated by the network are much better, you can find them in Scene2 and Scene6, or generate your own with the pretrained network.

Regarding the coordinate, you can call the function transform_point_cloud in the data_preparation.py with the default parameters. This will rotate the point cloud 7 degrees. You can take a look at the examples provided in the notebooks to understand how to do it.

HYY-ying commented 2 months ago

Thank you for your reply! The radar point cloud generated with the code provided in signal_processing_matlab/generatePointCloud.m does not contaion doppler information, does it? We try to generate radar point cloud using the adc data provided in your dataset, but we find that the coordinates in our generated code are different from data in the folder radar_ososos. So, I would like to know what coordinate system the point cloud information in the folder radar_ososos is under, is it in the original radar coordinate system, or have you converted the coordinates of it?

HYY-ying commented 2 months ago

And could you give me the illustration of the coordinate system(x, y, z) for radar、lidar and camera? Thank you very much!

HYY-ying commented 2 months ago

image image Please look at the two pictures above. These two radar point cloud files are from the same frame of data. In the intensity dimension they have the same value, but the (x, y, z) values are different, why? And whether there are transformation matrix between radar, lidar and camera?

IgnacioRoldan commented 2 months ago

Thank you for your reply! The radar point cloud generated with the code provided in signal_processing_matlab/generatePointCloud.m does not contaion doppler information, does it? We try to generate radar point cloud using the adc data provided in your dataset, but we find that the coordinates in our generated code are different from data in the folder radar_ososos. So, I would like to know what coordinate system the point cloud information in the folder radar_ososos is under, is it in the original radar coordinate system, or have you converted the coordinates of it?

You are right; the Doppler information is not in the point cloud generated by the OSCFAR. However, it is very easy to get them. In line 48 of generatePointCloud.m you have the Doppler indices. You can save them and use them later. The point cloud generated by the network has, by default, the speed info. Please be aware of the limitations of the folding explained in the warning of the readme.

The pointclouds are in cartesian coordiantes. There is an offset of 7 degrees between radar and lidar, in the previous comment is explained.

Regarding the images and the resulting point cloud, the OS-CFAR is very sensitive to the hyperparameters (pfa, k, window sizes). A small change in these parameters can significantly change the resulting point cloud. The provided point clouds are the ones that perform best against the metrics presented in the paper mentioned in the readme. However, the 3D versions of the pointclouds generated by the OS-CFAR are not very good. If you want to use OS-CFAR, maybe the 2D version without elevation will be more helpful.

HYY-ying commented 2 months ago

Thank you very much! I want to know more details about how to get the radar point cloud files in the folder radar_ososos. Are the point clouds in the folder radar_ososos the 3D version (the elevation values are not zero in the image)? After the radarcube is processed through the code in generatePointCloud.m, whether other processing details are done before the final point clouds in the folder radar_ososos are obtained? Because the results I got when I processed radarcube through the code in generatePointCloud.m directly are not the same as in the folder radar_ososos, and I didn't modify any parameter. I'm very confused.

HYY-ying commented 1 month ago

I didn't change any parameters in signal_processing_matlab, but the radar point clouds are different from that in radar_ososos. 57c05b03ab20a457286c932b5c47c372 image

HYY-ying commented 1 month ago

Is the radar point cloud in Scene 2 and Scene 6 the result of filtering after generatePointCloud.m?

IgnacioRoldan commented 1 month ago

No, the radar point cloud in the folder radar_ososos folders is directly the output of the script generatePointCloud.m script. In the pictures you send, both point clouds are almost identical, so I don't understand the problem. There may be some insignificant differences due to the hyperparameters of the OS-CFAR detector, but the quantitative results should almost not change.

HYY-ying commented 1 month ago

But the number of radar point clouds generated through generatePointCloud.m script is much larger than that in the radar_ososos of scene2 and scene 6.

BotaoSun commented 1 month ago

But the number of radar point clouds generated through generatePointCloud.m script is much larger than that in the radar_ososos of scene2 and scene 6.

Hi, I think I could explain the reason. If I don't misunderstand, you are using the generatePointCloud.m after our update in August (We modified the elevation of interest to -15 degree to +15 degree), while the radar PCs in the 'radarososos' are not updated. Thus, there might be some difference between the PCs you generate and the PCs in the 'radarososos' file.

Additionally, there is a typo in https://github.com/RaDelft/RaDelft-Dataset/blob/188c51a09e80bb47393da09bed30e3f222c7997c/signal_processing_matlab/generatePointCloud.m#L21 It should be _wz_vec = wzvec(48:81)
We will fix it later.

HYY-ying commented 1 month ago

for example, the radar point clouds file of frame 802 in Scene 2 I generated using generatePointCloud.m is 84 kB with wz_vec = wz_vec(43:81), but the corresponding frame in radar_ososos is only 12 kB

HYY-ying commented 1 month ago

Could you try generating a radar point clouds file with generatePointCloud.m script and compare it with the one in radar_ososos folder?

HYY-ying commented 1 month ago

And there is no radar_ososos folder in the rosDS folder of scenarios 4 and 7.

IgnacioRoldan commented 1 month ago

If you use the following parameters, you will get very similar results:

rGuardCell = 0;
rTrainCell = 10;
aGuardCell = 0;
aTrainCell = 10;
k = floor((rTrainCell*aTrainCell*4) * 0.75);
p = 1e-3;

Regarding the missing points in scenarios 4 and 7, I am preparing a new version of the dataset to fix it. You will receive an email soon.

HYY-ying commented 1 month ago

Ok, fine,thanks!