Giter VIP home page Giter VIP logo

run_based_segmentation's Introduction

Run_based_segmentation

A ROS node to perform ground plane fitting and run_based_segmentation for LiDAR pointcloud.

pic1 pic2

@inproceedings{Zermas2017Fast,
  title={Fast segmentation of 3D point clouds: A paradigm on LiDAR data for autonomous vehicle applications},
  author={Zermas, Dimitris and Izzat, Izzat and Papanikolopoulos, Nikolaos},
  booktitle={IEEE International Conference on Robotics and Automation},
  year={2017},
}

Requirement

Run

$ catkin_make
$ rosrun points_preprocessor_usi groundplanfit
$ rosrun points_preprocessor_usi scanlinerun

And cluster point cloud will be published as cluster with different label.

run_based_segmentation's People

Contributors

vincentcheungm 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

run_based_segmentation's Issues

Cann't work well in Kitti dataset

Hi!
thank you for sharing your code, I use your code to segment the point cloud after removing the ground, and test it in Kitti dataset sequence 00 . The result is not ideal, especially in the point cloud of vehicle segmentation, it is difficult to successfully segment the correct result. Have you used this method to test in Kitti? My test results are as follows:
kitti

Regards
Peng wei

Unable to produce clustering

Hi VincentCheungM , thanks for all your works. However, I have encountered some problems when running your code.
(1) Unable to produce clustering
My running environment is ubuntu14.04 and ros indigo.

my data : 2011_09_30_drive_18.bag from kitti.( 64 velodyne)

my cofig :
sensor_model_, 64
th_run_, 0.5
th_merge_, 0.1
OR
sensor_model_, 64
th_run_, 0.8
th_merge_, 0.2
There is no clustering here, no matter how I modify the parameters。

(2) Failed to find match for field 'ring'.
when I rosrun points_preprocessor_usi groundplanfit,The prompt will be printed on the screen:
“Failed to find match for field 'ring'.” However, This does not affect ground segmentation.
This node will still be able to divide the ground well.

Thank you again for your work and looking forward to your reply.

The performance is similar to ECE!?

Hi,

Appreciated for your work.
It worked on my same PC for Velodyne VLP-16, its performance is too bad.
Seem not to be implemented to "smart indexing"? You directly use Octree radius search?

Thanks.

void ScanLineRun::velodyne_callback_

Hello!
Thank you very much for your work!
There are a few questions when you read your code. In the void ScanLineRun::velodyne_callback_ function, when calculating the row, how are the numbers 563, 1688 and so on? Why use this calculation method?

How to use this node ?

Hello everyone,

please mind me asking this question. I'm new to ROS, just started learning it online 2months ago, I can't figure out in what repository I should clone it, I tried different location and each time when I catkin_make I get a Invoking cmake failed error, so I guess I'm not doing it right. Can someone help me please ?
Im working on ROS Kinect, already installed PCL tools, don't know about the velodyne driver. I'm playing some bags provided by an Ouster 64 Lidar I recorded myself

Thanks !

unable to run the groundplanfit?

Thanks for your fantastic work!
I compiled this project and launch the ros node of groundplanfit. After I publish the /velodyne_points ros topic, while it failed in groundplanfit.
This is my ros topic published in python.

rospy.init_node("lidarSender",anonymous=True)
pointcloud_publish = rospy.Publisher('/velodyne_points', PointCloud2, queue_size=10)

flag  = -1
ref_lat = 0
ref_lon = 0
ref_alt = 0
C_EARTH = 6378137

def publish_pointcloud(file_name,t):
    print(file_name)
    Fieldx = PointField('x', 0, 7, 1)  # field name, offset, datatype(float32), count
    Fieldy = PointField('y', 4, 7, 1)  # field name, offset, datatype(float32), count
    Fieldz = PointField('z', 8, 7, 1)  # field name, offset, datatype(float32), count
    Fieldi = PointField('intensity', 16, 2, 1)  # field name, offset, datatype(uint8), count
    Fieldt = PointField('timestamp', 24, 8, 1)  # field name, offset, datatype(float64), count
    #Fieldr = PointField('ring', 28, 2, 1)
    #Fieldl = PointField('label', 32, 2, 1)
    pointField = [Fieldx, Fieldy, Fieldz, Fieldi, Fieldt]
    data = np.loadtxt(file_name)
    header = Header(stamp = t)
    header.frame_id = 'map'
    sensor_msg_pointcloud = point_cloud2.create_cloud(header=header, fields=pointField, points=data)
    pointcloud_publish.publish(sensor_msg_pointcloud).

While it responsed with this.

jinxiao@jinxiao:~/YU/catkin_20190118$ rosrun points_preprocessor_usi groundplanfit
[ INFO] [1547882021.742146913]: Inititalizing Ground Plane Fitter...
[ INFO] [1547882021.748947743]: Input Point Cloud: /velodyne_points
[ INFO] [1547882021.755725621]: Sensor Model: 32
[ INFO] [1547882021.762239499]: Sensor Height: 2.500000
[ INFO] [1547882021.769587839]: Num of Segments: 1
[ INFO] [1547882021.776253835]: Num of Iteration: 3
[ INFO] [1547882021.782429419]: Num of LPR: 20
[ INFO] [1547882021.788627200]: Seeds Threshold: 1.200000
[ INFO] [1547882021.794751334]: Distance Threshold: 0.300000
[ INFO] [1547882021.883559641]: No Ground Output Point Cloud: /points_no_ground
[ INFO] [1547882021.889763761]: Only Ground Output Point Cloud: /points_ground
Failed to find match for field 'intensity'.
Failed to find match for field 'ring'.
Failed to find match for field 'intensity'.
Failed to find match for field 'ring'.
Failed to find match for field 'intensity'.
Failed to find match for field 'ring'.
Failed to find match for field 'intensity'.
Failed to find match for field 'ring'.
Failed to find match for field 'intensity'.
Failed to find match for field 'ring'.

do you have any idea?
thanks for you help !!!

noetic

该功能包可以在 noetic 版本上运行吗?

Does this code works for Ouster Lidar as well ?

Hi,

Im working on a project using a ouster lidar 64, I'm struggling to find any documentation about objects segmentation, so my question is can this code work on Ouster as well or it's only for velodyne Lidars.

Thanks

Unable to view scan line run clustering?

Hai,

I got simulated ros codes ground plane fit and scanline codes. All the topics are published but i don't know how to view the results... I already installed visualization ros toolkit. Kindly help us....

about ground segmentation

Hi,
Thank you for your nice work. And i have a question about it. Do we need to divide the original pc into different segments by x value before do segmentation work?

clustering results lose part of non-ground points?

Hi VincentCheungM,Thanks for your fantastic work!
I run the codes with KITTI dataset, and the following figure shows all the non-ground points(different colors represent different rings):
image
But after clustering, some of them are missing:
image
do you have any idea? Is it because the parameters need to be adjusted ?
Thank you very much and looking forward to your reply.

some parameters meaning

兄台,打扰您一下,请问以下这段代码的几个数是什么意思?
包括:
1、0.00279111
2、563
3、1688
range = sqrt(point.x*point.x + point.y*point.y + point.z*point.z); if (point.x >= 0) { row = int(563 - asin(point.y/range)/0.00279111); } else if (point.x < 0 && point.y <= 0) { row = int(1688 + asin(point.y/range)/0.00279111); } else { row = int(1688 + asin(point.y/range)/0.00279111); }

不胜感激!

Sidewalk detection

Does this algorithm detect the road from the sidewalk ? Or both of them are both a ground plane after segmantation and if this is the case how do you recommend to distinguish between sidewalk and the road?

No data being published on topic /slr

Hi,

I am experiencing couple of issues. First, while running scanlinerun node on example.bag, I see no data being published on /slr topic. rostopic echo /slr dislpays nothing.

Second, while running groundfitplan node on sample bag other than example.bag, again I see no data being published on either of /points_no_ground or /points_ground.

Any help regarding this would be appreciated. Thanks.

The result of groundPlanefit is unstable?

Thank you for your advice.
It works well on the example.bag, and I add the info of 'ring', while the test results on the own data set are not stable, the detection results of each frame vary greatly.

screenshot from 2019-01-21 20-53-13
screenshot from 2019-01-21 20-52-28

Do you have any idea about this problem? Is it because of my data?
I am looking forward to your reply. Thank you very much!

row calculate

hi,can i ask a question about row's calculation?
row = int(563 - asin(point.y/range)/0.00279111);
the number 0.00279111 how did you get it ? if 0.0027911 =1/[(180/pi)*(2251/360)]
why this angle which is an inclined plane?if row is yaw,it should be the angle between the ground.

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.