Open vkee opened 7 years ago
Very good idea! I'm looking forward to see results on this! Thanks @vkee ! :)
fyi the ICP LiDAR drift could most likely be reduced by adjusting the parametrization of the input filters and of ICP. We did not worry about this as we anyway wanted some drift to show that we can actually close loops.
@vkee hi vkee, I am also planning to do the exact the same thing. LOAM is very impressive in current pipeline in terms of accuracy, so maybe it does not need to have loop closure even in a large-scale environment. But it would definitely helpful if loop closure would be added in.
@XuDongTL I've noticed that the small drift does build up over longer sequences. Additionally, LOAM does not localize using the existing map that it has generated.
One easy way to integrate them would be to have SegMatch subscribe to the tf output from LOAM.
Hello @vkee, Have you tried to integrate SegMatch with LOAM already? I was also thinking to integrate SegMatch with my algorithm. Could you please help me about the neccessary changes.
@M1234Thomas fyi there is also issue #48. In the short-mid term we would like to remove the dependency of segmatch and segmatch_ros on laser_slam. That should make it easier to integrate your LiDAR odometry - SLAM back-end algorithms.
Thank you so much for your response. I have taken a look at issue #48 and I am working based on that.
Hey, I'm a master's student from KTH, where I'm working on integrating loop closure methods with LOAM / V-LOAM.
I will try Segmatch at some point. Have you made any progress on it? If so, how was your experience?
Thank you in advance
Hi @YoshuaNava great to hear from you again! :-) I have not yet made any progress on this and am working on open-sourcing the implementation of our latest incremental localization paper: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8283725
That will hopefully happen within the next month. Cheers!
@YoshuaNava Can I have your e-mail so we can change some thoughts about this, cause I m working on making the mapping and loop closing with segmatch simultaneously.
@DriftingTimmy For sure! It's yoshua.nava.chocron@gmail.com
@rdube Right now if I want to separate the segment, classifier and segment matching part of the segmatch algorithm, what dependencies do I need to use? Only laser_slam and libpointmatcher? The back end part I want to use G2O to replace GTSAM. And the real-time tf messages will be provided by the LOAM algorithm.
@DriftingTimmy yes but laser_slam includes GTSAM. Removing the dependency to laser_slam is on the mid-term bucket list ;-)
Hi, recently I came across the NDT mapping in Autoware. I have tried the both LOAM and the Stencil (LOAM's later improved version). I have realized the issue with drift is quite significant with ICP based methods. I am planning to work doing the same as you are trying with NDT. The pros of NDT mapping is it quite good for large scale mapping with minimal drift but with loop closure missing it has issues with Z drifts. The no of tweaking parameters are also less. I was wondering if I could take the segmatch loop closure and integrate with NDT mapping. any thoughts on the same? The loop closure of segmatch is really good. Please share your thoughts on the same.
@rickeshtn thanks for your comment! I am not familiar with NDT mapping but given that it is a pose-graph approach it should be feasible to include loop closure constraints. Thanks for keeping us updated about your progress! I'm trying to open source our latest version and remove the dependency to laser_slam asap.
@rickeshtn I've tried NDT method to build a map on a large scale environment and the result is ok with a little drift. But the corresponding problem is that this method takes too much time than LOAM which I want to integer with segmatch. And can u give me a reference to the Stencil method u mentioned here? Thx very much. Further questions will be discussed here or u can send me an e-mail. My email address is lxneverfail@gmail.com.
Hey @rickeshtn @DriftingTimmy, There is a very nice algorithm from Kenji Koide that employs NDT, and performs loop closure by comparing individual (keyframe) clouds within a certain distance from each other. To correct drift he adds a constraint on floor planarity, and GPS measurements to the pose graph: https://github.com/koide3/hdl_graph_slam It uses an optimized version of NDT and GICP: https://github.com/koide3/ndt_omp
It might be possible to combine this with SegMatch. The algorithm (hdl_graph_slam) works well in small areas, but as their current loop closure method is local, it tends to fail in big areas (for example, those of KITTI).
(Hope this helps. Sorry for the spam)
@YoshuaNava Thanks for your proposal ~ One of my fellow use an approximate framework like the HDL_GRAPH do, and the result is ok~ But this algorithm is also run offline right? I think segmatch can create the odometry and the loop in real-time, we can try NDT to help modify the front-end to correct the drift.
Thank you @DriftingTimmy I understand. I faced the same issue in some 3 months back autoware. The recent update on NDT is really fast. It doesn't take as much time as before. Probably you should check it out, and also there is a CUDA implementation now. It really speeds up the process. I also tried multi lidar fusion with NDT but had issues with NDT crashing after awhile. Still working on it.
@YoshuaNava Thank you. Will take a look at it. I haven't worked on it. @DriftingTimmy it will be great to exchange some ideas over mail I shall drop you a mail in awhile. Sorry for the delay.
@rickeshtn Thx a lot, I haven't tried the CUDA edition yet, but the corruption of the NDT algorithm may be that small amount of the point cloud may disable the NDT algorithm. Maybe u can try to enlarge the voxel size of NDT.
@vkee hi,vkee. Have you tried to integrate LOAM with SegMatch successfully? I'm going to do the same thing but wondering it is feasible to do this? Any suggestions? Thanks in advance!
How about moving GTSAM dependency out from lidar_slam going? @rdube
Hey, I'm a master's student from KTH, where I'm working on integrating loop closure methods with LOAM / V-LOAM.
I will try Segmatch at some point. Have you made any progress on it? If so, how was your experience?
Thank you in advance
Hey @YoshuaNava Did you try to integrate loop closure with LOAM/V-LOAM?
intergrating loop closure in loam is not a easy way u can do.Because LOAM is a very complete system including odometry and optimization(mapping) ,if u want to do with LOAM,modify the mapping.cpp is significant,because mapping is the key to improve the SLAM performance.
Hi @vkee, I used the easiest way to integrate loam with segmap by subscribing the tf advertised by loam laser mapping node and with some minor changes in laser_slam_worker.cpp. It seems that the system cannot achieve real-time performance. Only when I set the frequency of rosbay as 0.5Hz, the result looked good.
@vkee @rdube @YoshuaNava sry to bother you,i really confused about how to install it.Could you please tell me how to install segmatch but not segmap?i dont have a nivid GPU,i find there no segmatch branch,and i install it forked by others years ago,but compile failed with laser_slam.someone tell to choose fix/pointers branch,but i cannot find it.plz help me,thanks a lot
Hi,
I think a great feature to add would be integrating LOAM as an alternative to the current ICP-based LiDAR odometry for SegMatch SLAM. For those who are not familiar with LOAM (Lidar Odometry and Mapping in Real-time https://www.researchgate.net/profile/Ji_Zhang50/publication/282704722_LOAM_Lidar_Odometry_and_Mapping_in_Real-time/links/56193e3008ae6d173086ed6b.pdf), LOAM is a very low drift LiDAR odometry method that has achieved very impressive results on the KITTI dataset (currently 2nd - http://www.cvlibs.net/datasets/kitti/eval_odometry.php). However, it does not incorporate loop closures to eliminate drift over time.
I think that integrating LOAM could improve SegMatch SLAM's performance as the ICP LiDAR odometry introduces significant drift as noted in the parameters file (https://github.com/ethz-asl/segmatch/blob/master/laser_mapper/launch/kitti/kitti_loop_closure.yaml#L117) and verified by my own experiments. I am planning to work on this over the next week or so.
Any thoughts / suggestions?
Thanks!