gokulp01 / ros2-ublox-zedf9p

ROS2 drivers for U-blox ZED F9P
30 stars 13 forks source link

Providing RTCM data? #6

Closed yishaiSilver closed 3 months ago

yishaiSilver commented 3 months ago

I was previously using a simple driver that I wrote myself (which just interfaces with the python library provided by SparkFun), but this one seems to be vastly superior. The only exception is that I see no way to provide RTCM3 correction data to the board. I have tried writing it to the same UART device as the one connected to by the driver, but then the driver crashes. If I run the correction data and then the driver, it seems like the board never receives the correction data.

If I use a separate USB cable, I can send correction data to the board (and the RTK light flashes), but it doesn't seem like I ever get a fix (and for some reason, the light stops flashing after a bit). This was not the behavior when I was using my own, simple driver. Likewise, I can see that the position_covariance in /fix never seems to go down, which is odd.

For context, my base station is about 51 Km, away, but this was close enough for a fix using my driver. It seems like it may be an issue with this driver, however, because the following line got printed by this driver:

[ublox_gps_node-1] [WARN] [1716407245.322928566] [ublox_gps_node]: INF: DGNSS long baseline (51 km)

yishaiSilver commented 3 months ago

Okay, just to follow up, I was providing RTCM3 data. The default setting of uart1/in only provides RTCM. By setting it to 35 (UBX+NMEA+RTCM3), I can now provide correction data, but only if the driver is started after the provider. Otherwise it will crash with the following message: [ublox_gps_node]: U-Blox ASIO input buffer read error: End of file, 0. Is there any way of fixing this?

Another issue is that the accuracy as reported by hAcc seems to differ wildly from the covariance reported by the following: https://github.com/sparkfun/Qwiic_Ublox_Gps_Py/blob/9956dbca971d5c4273aff13decd89716c1a4a97c/ublox_gps/ublox_gps.py#L461C9-L461C81

It seems like hAcc might be a better estimate according to the datasheet, but I thought it was an interesting discrepancy worth bringing up.

RYANXIEQ commented 3 months ago

I have been experiencing the same U-Blox ASIO input buffer read error: End of file, 0 issue. Waiting for a solution

yishaiSilver commented 3 months ago

@yishaiSilver I am working on the same thing to receive RTCM messages. Can you share what is your config setting in https://github.com/gokulp01/ros2-ublox-zedf9p/tree/master/ublox_gps/config?

In addition, I have one more question about the message type. Did you install rtcm msg type in the same colcon work space?

I don't have access to the file right now, but I remember making the following changes:

I have been experiencing the same U-Blox ASIO input buffer read error: End of file, 0 issue. Waiting for a solution

Beginning the transmission of correction data before running the ros2 node fixed this for me after making the changes listed above. Maybe just add a delay in your launch file?

It would be nice if there were a better way to integrate correction data into this node, but a separate process seems to be working for me, so I'm closing this issue.