-
Notifications
You must be signed in to change notification settings - Fork 50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Testing in tunnel #47
Comments
Hi @wpwebrobotics - thanks for testing locus! You have hit the nail on the head with your question - this is one of the more challenging components of lidar SLAM, especially with lower resolution lidars, such as a VLP-16. So I am super excited you are testing in such a challenging environment! A great way to try and tackle these lidar-degenerate cases. That tunnel looks to be especially challenging! Unfortunately, there is probably a limited amount that you can do by tuning ICP parameters - there is just inherently limited information in that environment. We did have an observability module that would have been showing that your observability in the tunnel is very low. @yunzc might have some modules in LAMP you could use to test the point clouds from there (if you are interested, I can give you more info). Hence, my advice for these environments are:
It is especially a challenge on drones because of the limited power and weight, but hopefully the thoughts above can help? Happy to continue the discussion here. |
@femust - do we still have our observability computations in the code? |
Yes we have and it may be use for this purpose, though probably we shouldn't do that after update of odometry step hehe but it is to be improved yet :) |
Hello, I have a L515 and I wana use it as second odometry source like you suggest. |
@Cristian-wp if L515 provides for example visual odometry you just need to change the ODOMETRY_TOPIC in |
@wpwebrobotics can we close this issue or some additional comments are needed? |
I have check online and even ask to Intel, the L515 can not provide an odometry topic, you have to use an external package to generate it. Maybe can you suggest a robust package to perform visual odometry? |
it doesn't have to be odometry directly from visual sensor, it can't be wheeled as well (or legged), you can use imu as well |
@femust thanks for the fast reply :) |
Hi @Cristian-wp - thanks for your questions above. To clarify things T265 - this is a visual SLAM sensor from Intel https://www.intelrealsense.com/tracking-camera-t265/ - and there are other options out there now from smaller companies - this would give the odometry output that @femust was describing above. Other than calibrating frames, this is the easiest to set-up and run. If you want to run your own Visual-Inertial-Odometry (VIO), I would look at some of the following open source packages: If you go with these options there are a number of implementation steps that are important to get the desired accuracy (good IMU to camera mounts that are rigid, noisy impression if you are on a drone, good calibration between camera and IMU). Using a camera that comes with an IMU pre-calibrated can make things quicker. Otherwise, it is a good exercise to set things up, just give it time to do it right to get decent results. |
Hi everyone, I was away on vacation but my colleague Cristian kept this very interesting discussion open.
We hope to do these tests soon. |
Good luck with this! I think that is a good summary. Yes, ROVIO is a great option as well. Another thought - depending on the specifics of your application - is to use a UWB ranging beacon. It is light-weight |
Thank you and likewise. |
@femust Thank you for your help, but can you reopen the issue? Last week I have try to run locus with vins_mono as odometry input, but the performance does not change, Locus fail always at the same point.
Can you suggest me a way to fix the problem? |
If the tunnel is very very long (as in your case) the locus may not act nicely and it's a widely known issue with lidar odometry system and ICP, even with preintegration from odometry sources (probably you would spend a lot of time for tunning params to make it work which does not make sense I think if you want to do something generic). What I would suggest is to turn on flag |
Hi @BenjaminMorrell, about your offer to test our pointcloud with the LAMP modules "@yunzc might have some modules in LAMP you could use to test the point clouds from there (if you are interested, I can give you more info)." @yunzc |
@femust thanks I will try this way with the velodyne. Do you have an example or maybe a paper that explain how to switch the slam method in a safe way? Maybe I am wrong, but is not dangerous to switch the slam method in air? Now we have even a Ouster so we try to repeat the first suggested tests with this new sensor. |
locus is an odometry system so it works on the incremental changes. So you can just detect the slip of lidar odometry and then from start using incremental measurements from vio and then if you want use SLAM system, just feed this to LAMP |
@Cristian-wp - have you looked at how well Vins-Mono runs? By itself is it tracking the motion correctly in the areas where raw LOCUS is not? That will be helpful to get an idea of how much we can expect the VIO to assist. From what @femust is saying just above - that would be the way to get an observability parameter (I believe that is the same method @yunzc has implemented). If you read this metric, I would test if it gives you a good signal when you are in the challenging parts of the tunnel (i.e. tells you that your observability is low). You could switch the input to LAMP based on this signal (e.g. switch from LOCUS to VIO) - however you have to be careful when doing this switching not to introduce incorrect jumps. See this paper for details on how we have done this in the past: https://arxiv.org/pdf/2008.09679.pdf |
Basically, you need to make sure you are always using only incremental data. There is a version of this logic in LOCUS for the data integration part. |
@BenjaminMorrell VINS runs well in our datasets were the LOCUS fail. @femust thanks a lot for your reply, I will try in these day to implement your solutions. |
Hi, thank you for sharing your work.
We are testing Locus in different environments with a drone (currently hand carried) with 1 Velodyne VLP-16 and a Vectornav IMU.
Where there are sufficient planes and edges all is well, now we are testing it with a rosbag made in a very monotonous railway tunnel about 50 m long.
Arriving about 9 m from the start Locus hangs for some time until the drone approaches the exit.
In this way it does not track about 25 meters.
Video here: https://www.youtube.com/watch?v=RqD9AQTF9YE
I have tried many combinations of these parameters:
leaf_size: 0.25/0.10/0.20/0.30/0.50
recompute_covariance_local_map: true/false
icp_covariance_method: 1/0
icp_max_covariance: 0.01/0.1
Iterate ICP this many times.
iterations: 30/25/20/15/10
Radius for normal search
normal_search_radius: 10/20/30
I did not get much difference.
Do you know of any other configurations to try in this environment?
If this, as with other slams, is a difficult environment does a second point cloud have a good chance of solving the problem?
And, since we need the first lidar horizontal for collision avoidance, what orientation do you think would be optimal for a second lidar?
See you soon.
The text was updated successfully, but these errors were encountered: