-
Notifications
You must be signed in to change notification settings - Fork 11
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
What reasons are there for the function callback to not be triggered on FusionEngineFramer's OnData? #184
Comments
Hey @sisaha9. Your setup seems ok. Are you sure your The framer class uses glog and has a number of built-in debug prints that you can enable and may help diagnose what's going on. You can enable them by enabling glog output to stderr ( To enable logging, you need to include glog in your project (https://github.com/google/glog) and then define the Separately, are you aware of @BlanchoMartin's ROS driver work? He has a driver working nicely with some new features like serial port handling, and is getting it ready to be made public soon. I believe it was initially based on your code. It might be a good idea for you guys to sync up and compare notes. |
Ah one additional thought: if you do not have glog compiled and enabled ( |
I am using the Quectel device so that makes sense. Rn it's failing the Sync0 check. I haven't seen the other branch but would def like to sync up |
Sync 0 is simply looking for the first byte in the stream. That byte is ASCII When you say it's failing, which condition is it hitting? Is it finding sync 0 but never finding sync 1 ( If it never finds sync 0, that seems a little odd since it's a pretty common byte in both ASCII and binary. If it finds sync 0 occasionally but never finds sync 1, that's maybe a bit unexpected: the text If it's sometimes finding both sync bytes, but then never getting past the payload size and CRC checks, either the stream doesn't have any FusionEngine messages in it (FusionEngine output disabled, using the wrong UART on the Quectel device, etc.), or bytes are getting dropped somewhere. Note that UART1 on the LG69T does not contain FusionEngine data by default, only NMEA. UART2 should have FusionEngine+NMEA+RTCM. |
@adamshapiro0 This is the exact line it fails at: https://github.com/PointOneNav/fusion-engine-client/blob/master/src/point_one/fusion_engine/parsers/fusion_engine_framer.cc#L167 It never enters SYNC_1 and early exits after. For me the first byte is appearing as |
Ah - if it's never getting past that, it means your data stream does not contain any SYNC0 bytes ( The VLOG(4) line just above that should be printing out the byte value every single time it gets there. If you're not getting past SYNC0, I would expect that line to print on every byte you pass to the framer. Is that true? Are you only seeing Can you enable VLOG(4) and then upload a text file with the output from running a few seconds of data through it? If possible, if you can also record a file of the binary data that you're sending to the framer, that would be helpful. You should be able to process that binary file with the Python |
Here is the relevant codebase: https://github.com/sisaha9/fusion_engine_ros_driver
I bind the function to the framer here: https://github.com/sisaha9/fusion_engine_ros_driver/blob/0c128b3ebfa7824a57e62542b7b19506e2a8f257/src/fusion_engine_ros_driver_node.cpp#L42
I send the data here: https://github.com/sisaha9/fusion_engine_ros_driver/blob/0c128b3ebfa7824a57e62542b7b19506e2a8f257/src/fusion_engine_ros_driver_utils.cpp#L102
I can confirm that function is being called. The buffer size for framer was initialized to 1024 while the incoming messages from my quectel devices were of sizes 98, 256, 179 and 75. The callback functions is filled here: https://github.com/sisaha9/fusion_engine_ros_driver/blob/stable/src/fusion_engine_ros_driver_node.cpp#L64. So far that function has not been called and the code has never errored out
The text was updated successfully, but these errors were encountered: