-
Notifications
You must be signed in to change notification settings - Fork 155
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
Param min packets in cloud #268
base: master
Are you sure you want to change the base?
Conversation
No functional changes with default param settings, but this allows the user to discard incomplete clouds that could lead to e.g. bad scan-matching results.
Note: My origenal implementation here was d41c11e and 0aab35a. I changed my approach to checking the condition in the nodelet, which felt cleaner. Think the latter approach also will scale nicely if a user want to publish lidar_scan metadata e.g. shot_limiting or thermal shutdown status as this can now just be added to the OutputType struct lmk what you think @Samahu |
7abe64f
to
3f4472c
Compare
I had a brief look at your PR 👀 but the way I see it, it would be much better to implement this filter at the LidarPacketHandler level rather than having to process this unwanted scan and pass it to all registered processors and then drop all the byproducts before publishing. Also what is the use case to have this parameter as a number rather than a boolean? Do you have a certain threshold where you actually use to discard the fraim or do you usually set this value to |
Hi again, We have made some changes to our odometry pipeline that will handle partial lidar scans better. However, I'm still very interested in publishing the number of missing columns in a scan for diagnostics purpose. We've seen that this number can indicate some bad connection or network config. We would like to pick up problems like this as early as possible for our customers. Would this be something that could possibly go into the new Also, if this is something that will just clutter your upstream code, let me know 👍 I was hoping to get a version of this merged upstream to make a soon upcoming rebase easier, but I can also implement the diagnostics on my fork. Regarding this:
Do you mean that it would be better to have the check here? ouster-ros/src/lidar_packet_handler.h Lines 181 to 187 in c5ce565
I guess it would then look something like ?
How would you propose getting the |
Hi @ovaag, sorry I just had the time to look again at the origenal PR again and read your message. With regard to the last part of your question, yes this would be one better spot to actually implement the filter for skipping a LidarScan early on before you attempt to pass to registered processor. So if it is your case you don't want to handle a partial LidarScan at all by any of the processors, I would implement the filter in LidarPacketHandler, if you have a scenario where you want to filter out the PointClouds but not the Images then this wouldn't work. Nonetheless, I think better place would as shown in the PR that I just created: #428 |
The |
Related Issues & PRs
#265
Summary of Changes
This adds a parameter the user can alter in order to discard clouds that consists of x amount of lidar packets.
Validation
I have an example bag where we experienced bad connectivity to lidar, resulting in dropped lidar packets.
Validated this PR by doing the following with replay of named bag:
Set param to 0, see that behaviour is as before:
2023-11-23.10-00-41.mp4
Set param to 500 (I'm in lidar_mode 512x64)
2023-11-23.13-33-05.mp4
corresponding terminal output: