loam_velodyne icon indicating copy to clipboard operation
loam_velodyne copied to clipboard

Publishing rate of the /veloydne_points topic may affect the KITTI Dataset odometry results

Open claydergc opened this issue 5 years ago • 11 comments

I've been testing LOAM with the sequence 00 of Raw KITTI Dataset and I obtained wrong results as can be seen in this figure:

loamoriginal

Then, I decided to use the code written by J. Zhang and tried the distortion free sequence 00 of the KITTI Dataset with a publishing rate of 10 Hz and this is what I obtained:

sequence00loam10hz

Finally, I decided to publish the point clouds with a rate equal to 2 Hz and it seems that it is producing good results, as can be seen in the following figure:

sequence00loamoriginal

I was looking at the code and tracking the messages and I realized that when running at 10 Hz, the laserMapping node was not publishing its topics at the frequency it is supposed to do. This produced that this node dropped some messages from the topic /laser_odom_to_init, which seems to be a similar case to the issue #108

My computer is an Intel Core i7-7500U CPU @ 2.70GHz × 4 and I ran the code in Ubuntu 18.04 with ROS Melodic

claydergc avatar Jan 21 '19 19:01 claydergc

@claydergc hello,can you tell me how to plot the results of loam and how to calculate the RMSE ? I run the program in ROS.thx!

michaelczhou avatar Jan 25 '19 07:01 michaelczhou

Hello @michaelczhou I just updated the code I used to plot the last trajectory of the sequence 00 of the KITTI Dataset to https://github.com/claydergc/loam_velodyne_kitti_ros/. To calculate de errors you have to download the odometry development kit on the KITTI website and extract the transform matrix between scans. I plan to do that later, but now I don't have much time. I am also interested in reproducing LOAM's originai results in the KITTI Dataset. Let me know if you success on that.

claydergc avatar Jan 25 '19 16:01 claydergc

@claydergc I think I've found the reason why KITTI raw does not run well. The data arrangement in velodyne pcap frame is according to the scan sequence. But the data in KITTI raw bin is according to the ring sequence, so the transformToEnd() and transformToStart() will not work correctly. You can visualize the points in a frame one by one, the former has only one rotation, the later has multiple rotations.

sume-cn avatar Mar 13 '19 02:03 sume-cn

@sume-cn the velodyne pcap is the format the data comes when using the physical lidar?

claydergc avatar Mar 15 '19 17:03 claydergc

@sume-cn the velodyne pcap is the format the data comes when using the physical lidar?

pcap is this format, it's used to keep an exact copy of IP network packets.

So: yes. Replaying a .pcap file emulates almost 100% having a live sensor online.

jlblancoc avatar Mar 15 '19 22:03 jlblancoc

sume-cn the velodyne pcap is the format the data comes when using the physical lidar?

The data arrangement in velodyne pcap frame is according to the scan sequence.

@claydergc so @sume-cn meant here that the actual network packets represent the Velodyne scans not as a whole 360 deg. scan, but only the range from all lasers for a handful of directions at once, as the sensor rotates. Refer to the sources of the velodyne driver node for more details...

jlblancoc avatar Mar 15 '19 22:03 jlblancoc

@sume-cn @jlblancoc so, you mean that transformToEnd() and transformToStart() only work correctly when the data arrangement is in pcap format?

claydergc avatar Mar 16 '19 12:03 claydergc

@sume-cn @jlblancoc so, you mean that transformToEnd() and transformToStart() only work correctly when the data arrangement is in pcap format?

Yes, exactly

sume-cn avatar Mar 26 '19 02:03 sume-cn

@sume-cn Where did you download the raw KITTI dataset with velodyne data in pcap format? How to download the raw data for a specific KITTI odometry sequence?

Thanks

jingyibo123 avatar Apr 03 '20 05:04 jingyibo123

@jingyibo123 Did you solve it?

wangx1996 avatar Aug 16 '21 09:08 wangx1996

@jingyibo123 Did you solve it?

I have not found the link to download raw KITTI dataset in pcap format, but I found the correspondence between KITTI Odometry an KITTI raw data in the readme.txt of devkit_odometry.zip

Nr.     Sequence name     Start   End
---------------------------------------
00: 2011_10_03_drive_0027 000000 004540
01: 2011_10_03_drive_0042 000000 001100
02: 2011_10_03_drive_0034 000000 004660
03: 2011_09_26_drive_0067 000000 000800
04: 2011_09_30_drive_0016 000000 000270
05: 2011_09_30_drive_0018 000000 002760
06: 2011_09_30_drive_0020 000000 001100
07: 2011_09_30_drive_0027 000000 001100
08: 2011_09_30_drive_0028 001100 005170
09: 2011_09_30_drive_0033 000000 001590
10: 2011_09_30_drive_0034 000000 001200

jingyibo123 avatar Oct 22 '21 01:10 jingyibo123