vincentcheungm / run_based_segmentation Goto Github PK
View Code? Open in Web Editor NEWAn ongoing implementation ros node on `fast segmentation of 3d point clouds: a paradigm`...
License: MIT License
An ongoing implementation ros node on `fast segmentation of 3d point clouds: a paradigm`...
License: MIT License
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.
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!
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 !
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.
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.
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?
该功能包可以在 noetic 版本上运行吗?
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
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.
Hello, can this extract the segmented point cloud model?
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.
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 !!!
为什么您在聚类时选择在 velodyne_callback 函数中subscribe数据源中的/all_points,而不是去除地面的点云
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?
Hi,
Thanks for the code. it works really well, little lagging in real time performance.
Couldn't find the code for segments "N segs", Can you share the update code with N Segs which you have implemented
Hi Vincent. It's a wonderful work!
I want to use your code to segment Kitti 3d object detection velodyne data. But this data just have XYZI information rather than XYZIR. I notice the scanlinerun
node uses the scan line information.
My question is how can I obtain scanline information?
Thanks
兄台,打扰您一下,请问以下这段代码的几个数是什么意思?
包括:
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); }
不胜感激!
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:
Regards
Peng wei
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....
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?
Hi Vincent. It's a wonderful work! I wonder which license do you use?
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):
But after clustering, some of them are missing:
do you have any idea? Is it because the parameters need to be adjusted ?
Thank you very much and looking forward to your reply.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.