Don't process GNSS messages before SetDatum has been called#929
Don't process GNSS messages before SetDatum has been called#929karl-schulz wants to merge 2 commits into
Conversation
|
Might be a stupid question, but why can't we just add this right inside the If we have |
|
Actually, I take it back. This is the right way to do this. It also solves #927. |
|
@karl-schulz would you mind rebasing this on |
|
Hi @ayrton04 , OK, will do! |
|
Sorry everybody, I currently don't have capacity to port it. I'm not working on GNSS projects anymore. I hope somebody can pick up the PR here, as it's a really tricky issue and did cost us a lot of time. |
When the NavsatTransform node is starting with
wait_for_datum, the is the possibility of a race condition. We had nodes crashing because of this. My interpretation of the race condition is this:SetDatumservice is calledodometry/filtered/globalan map->base_footprint TF message with high x/y values.odometry/filtered/globalwith it's X/Y far outside the UTM origin/range, crashing.This is the error log:
I think this is because of theses issues:
odometry/gpsbefore one of these conditions is met:wait_for_datumparameter isFalseI fixed it in this PR and tested locally in a regression test that isolates the race condition. I also added some more debugging logs to track issues better - I can also leave that part out if you want.
I'd be very happy about feedback if I got the issue right and if somebody else is having similar issues.