-
Notifications
You must be signed in to change notification settings - Fork 259
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
Empty fields spam rosout with warnings #5
Comments
Okay, I believe I have this fixed properly. The new behavior can be summarized as follows:
This removes the warning spam when I run it on your bag file (thanks for uploading one - it's much appreciated). Can you pull the 5-handle_empty_fields branch and verify that it fixes the issue on the live receiver? |
Looks great, thanks Eric! I should have a chance to try this out this coming week, with two different receivers. The only note I have about the code is that |
Ya, I couldn't think of a better name for the function. I like |
Mike, did you get a chance to test this yet? |
Sorry, fell off my radar. I can definitely check at least one device in short order—will try to get to that soon. |
Okay, done! The modifications in the branch work great. I gave it a try with a cheap GlobalTop PA6H, and switching to the branch caused the following fix messages to be published with no sky view:
Publishing NaN messages like this is definitely a departure from previous behaviour, but I think it's good—it allows the processing node to distinguish between "GPS is off or malfunctioning" and "GPS has no fix". OTOH, processing nodes will have to be updated to be NaN-aware (though they always should have been checking the status field). The one thing I would note is that the fix topic is now being published upon receipt of GGA whether the fix is valid or not, whereas the RMC-based vel topic is only published when a fix is valid. I think this is okay behaviour, but something to perhaps clarify in documentation. |
I've updated the documentation a bit to point out that /vel will only be published if valid info was received (because TwistStamped has no status field) and that /fix "will be published with whatever positional and status data was available even if the device doesn't have a valid fix. Invalid fields may contain NaNs." Since this does change the existing messages that the driver outputs, I'm not going to release this into Hydro to avoid breaking existing systems. It is in the Indigo release that should be available shortly. |
👍 |
Blah, I've got another receiver that's doing this. Sample output:
Recorded session: https://www.dropbox.com/s/1hzfzln8brwmbm0/novatel-smart6.bag?dl=0 |
Wow. Was that indoors or with no antenna connected? I'm surprised it even bothers to output sentences that are so lacking in information. I'll take a look at this bag either this weekend or next weekend and make a fix. Could you include your rosout warnings to make sure that I get the same errors when playing back the bag file? |
Yes, this is indoors. It's a Novatel Smart6, cold start right out of the box. It's still helpful to see that the electronics are alive, but yes, these sentences are completely void of information— basically just enough to trigger warnings:
|
Remaining problem with NovAtel receivers was with an empty field specified for num_satellites.
I think I reported this previously, but I can't find the old ticket to wake it up. In any case, here's an example bag with some data from a ublox receiver that has no sky view.
ESR's gpsd docs offer the following:
Unfortunately, the link for the citation is broken, but it's a start. Seems nmea_navsat_driver shouldn't try to cast empty strings to numbers, or the try-block should be at the field level rather than external to add_sentence.
The text was updated successfully, but these errors were encountered: