PRBonn / pole-localization

Online Range Image-based Pole Extractor for Long-term LiDAR Localization in Urban Environments
MIT License
169 stars 22 forks source link

i dont know how to use it test with my pcd data #6

Closed Marine98k closed 1 year ago

Marine98k commented 1 year ago

how can i extract poles in my pcd map, im looking forward your reply. thank you

donghao51 commented 1 year ago

Hello, our algorithm uses range image as input. Therefore, the first step is to convert your pcd data to the range image format as shown in https://github.com/PRBonn/pole-localization/blob/96f15f8125e8b78da8282c4be127385ada3410a0/src/poles_extractor.py#L5 Then you can pass the range image to the pole extractor

Marine98k commented 1 year ago

thank you for you reply, i will have a try. this work have used polex ,so i want to known whether i can get a box in my PCD map or something like Segmentation in my pCD map。

donghao51 commented 1 year ago

Yes, we calculate both the x,y position and the radius of the pole. You can get a box based on these calculations.

Marine98k commented 1 year ago

dear author, i just read your paper and in your paper you have train a segmentation network,but i dont known how to visualize the result after simply realizing your work.

donghao51 commented 1 year ago

You can set vis=True in the detect_poles() and plot pole_vis using matplotlib https://github.com/PRBonn/pole-localization/blob/7a0f1292fbe9dba83778a25f944095f1aaeeebb4/src/poles_extractor.py#L94

Marine98k commented 1 year ago

dear author,when i use SLAM pcd map to run poles_extrators.py ,there something wrong . i want to if i can use the SLAM pcd map as an iput.the code is as follows

if name == 'main': xyz = o3d.io.read_pointcloud("/home/dell/zxh/pole-localization-main/data/9.19-1.pcd") , pole_vis = detect_poles(xyz, neighbourthr=0.5, min_point_num=3, dis_thr=0.08, width_thr=10, fov_up=30.67, fov_down=-10.67, proj_H=32, proj_W=250, lowest=0.1, highest=6, lowthr=1.5, highthr=0.7, totalthr=0.6, vis=True) plt.imshow(pole_vis, cmap="gray") plt.show()

donghao51 commented 1 year ago

In general, not. You must project your pcd to the range image using https://github.com/PRBonn/pole-localization/blob/7a0f1292fbe9dba83778a25f944095f1aaeeebb4/src/poles_extractor.py#L151 You need to pass the fov_up and fov_down, which are the field-of-view parameters of the LiDAR sensors. But it is almost not possible to get such parameter using the SLAM pcd map.

A possible way is to project the SLAM pcd map to the RGB image plane using extrinsic and intrinsic matrix and then extract poles on the projected depth map. But I never try it.