-
Notifications
You must be signed in to change notification settings - Fork 13
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
Remove miniature scale from science data and fix segfault #126
Conversation
Signed-off-by: Louise Poubel <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for debugging! Are you able to find data to test it locally? If I just delete the added if-statements, it still doesn't seg fault or hang for me.
I checked the hanging test at https://github.com/osrf/lrauv/pull/88/checks?sha=fa28e234918d0c2a86232d272e931095e2c1600c , and the output
10: [Wrn] [ScienceSensorsSystem.cc:858] 1D linear interpolation: query point lies on one side of all interpolation points. Cannot interpolate.
suggests that it returned NaN and something continued looping, possibly one of the loops in PostUpdate():
for (auto &[entity, sensor] : this->entitySensorMap)
On a side note, the bad news of looking at this actual data is that, I now remember why we needed the per-slice searches as opposed to barycentric. Ughhhhhh. It's the z resolution being significantly smaller than x and y! The 4 NNs are all in 1 line along z. We might have to go back to trilinear interpolation. Ugh. At least I haven't deleted those branches.
To make our lives easier, we might have to take a step back and make the strict assumption that input indices are sorted, like in netCDF.
On a related note, debugging the interpolation will be significantly easier if we can publish a visual Marker from the ScienceSensorsSystem plugin. Anything against that?
The last thing I left off in the trilinear interpolation branch is that the found 4 NNs didn't satisfy the assumption that they need to be in a rectangular prism, which was the reason I moved to the less restrictive barycentric interpolation. I would publish a Marker to see if there are any bugs to shake out, before giving up and rewinding to assume all the input indices are sorted.
Verdict: real data is ugly.
Signed-off-by: Mabel Zhang <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should be fixed in b8641f0
So the cause was a pretty important bug - in the 1D case of interpolation, I never stored the array after sorting, only stored the sorted indices, heh.
I'm gonna approve my own fix 😅 Try it and see if the new warnings still print for you - they shouldn't anymore.
Warnings are gone! Thanks for fixing the bug :D |
Tests were crashing for that PR, while investigating, I noticed it happened because the
MINIATURE_SCALE
had been removed.This PR removes the miniature scale and prints a warning instead of segfaulting, but I haven't looked closely into the barycentric interpolation to see why the miniature scale caused the issue, could you take a look @mabelzhang ?
I also added other changes from #88 which help us not need the miniature scale: