HKUST-Aerial-Robotics / ublox_driver

A driver for u-blox receiver (ZED-F9P) with ros support
GNU General Public License v3.0
104 stars 49 forks source link

Cannot get RTK solution #9

Closed Mil1ium closed 2 years ago

Mil1ium commented 2 years ago

@shaozu Hi, thanks for your nice work. I got a problem in getting RTK solution using ZED-F9P, ublox_driver and RTKLIB.

Following your instructions, firstly I did these steps: 1) Config ZED-F9P module: I enabled UBX-NAV-PVT , UBX-RXM-RAWX, UBX-RXM-SFRBX in u-center(Windows) and got the data; 2) Test in GVINS: Using Realsense D435i and ZED-F9P, I successfully run GVINS; 3) Test RTK in Windows: I entered my CORS username and password in "NTRIP Client" in u-center, and got "3D/DGNSS/FIX" solution;

Secondly, I am trying to get RTK solution in ubuntu, and did these steps: 1) Run str2str in RTKLIB: ./str2str -in ntrip://[my_username]:[my_password]@rtk.ntrip.qxwz.com:8002/RTCM32_GGB -out tcpsvr://:3503 or ./str2str -in ntrip://[my_username]:[my_password]@rtk.ntrip.qxwz.com:8002/AUTO -out tcpsvr://:3503 (configuration is the same as I did in u-center, including account, address, port and NTRIP mount point)

2) Launch ublox_driver with rtcm stream

and then I did not see carr_slon becomes 2 , just like this:

Screenshot from 2022-05-04 17-45-07

Then I try to check whether there are messages in port 3503, I cout some info in SocketHandler::startRead() and sometimes I see the info output in terminal. But I still can't get the RTK solution...

So, is there something wrong with my operations ?

And by the way, how can I get PVT solution without RTK fix and with RTK fix using one ZED-F9P module at the same time? Is that possible? I just need one for algorithm and the other for reference(RTK).

zouyajing commented 2 years ago

I have the same problem. Also, I have the same timeout message from str2str. In u-center, I saw the speed is about 100-200 bp/s. While in str2str, it is always zero.

Mil1ium commented 2 years ago

@zouyajing Hi, I have found a imperfect solution.

After trying for many days, I found that we need to provide our single point position information to NTRIP caster( for example, qxwz.com). But for some free NTRIP caster(for example rtk2go.com) , there is no need to privide your position.

1) Free NTRIP caster If you are using free NTRIP caster like rtk2go.com, just run like this : ./str2str -in ntrip://rtk2go.com:[port]/[mount_point] -out tcpsvr://:3503 where the mount_point you can infer from rtk2go.com.

2) Non-free NTRIP caster If you are using non-free NTRIP caster like qxwz.com,try to run str2str like this : ./str2str -in ntrip://[my_username]:[my_password]@rtk.ntrip.qxwz.com:8002/RTCM32_GGB -p [my_lat] [my_lng] [my_alt] -n 1 -r 1 -out tcpsvr://:3503 I provide my single point position after parameter -p, then I got the message from qxwz.com. Then, in the ublox_driver provided by Dr Cao, the carr_soln in PVT topic becomes to 2, which means RTK Fix solution. When the carr_soln becomes to 1, it means RTK Float solution. By the way, if you are using CORS service provided by qxwz.com too , there might be a little little problem : the RTCM data is not particularly continuous at times. In my test, this problem occurred but maybe it doesn't matter.

3) Complete solution If you want to solve this problem completely, I think you need to build a ROS node , which receives PVT or LLA topic from ublox_driver , then sends request message to NTRIP caster including the information as above. As for how to construct request message , maybe you can refer to some projects that receive RTCM data in github. Or , you can directly refer to the source code of str2str in RTKLIB.

I'm busy these days and I got no time to solve this problem , if you solved it , please share your code if it's convenient for you. If you got any other questions , you can send an email to millium@qq.com, I'm looking forward to discussing it with you.

zouyajing commented 2 years ago

@Mil1ium hi, your solution sounds good. I will try it tomorrow.

I use a free ntrip caster provided by HK land department. But it also requires username and password like qxwz.com. I have one more question here. Shall I send the request to the caster once, or should I send the request again after long-distance movement? Thanks.

Mil1ium commented 2 years ago

@zouyajing I haven't tested long-distance movement , but I think it is necessary to send your real-time position to NTRIP caster. So I think building a ROS node as above is a perfect solution.

I'm just a new comer to this field , so I don't really understand some concepts in this area. As for why sending your real-time position, I think it is a correction process by RTCM data and your position is needed for the process. I may not be right.

hard223123 commented 2 years ago

@Mil1ium hello, I have got trouble in running ublox_driver. I have some questions to ask.

  1. I'am sure the receiver could get UBX-RXM-RAWX, UBX-RXM-SFRBX and UBX-NAV-PVT in u-center (windows). But when i run ublox_driver, an error occurred that rxmsfrbx length error(len = 48). And sometimes another error will occurr, which said rxmrawx week = 0 (even I am outdoor). I don't know whether something wrong with my config.
  2. If I just want run GVINS without RTK, whether one zed f9p is enough.

Have you encountered these problems? And I would appreciate it if you could provide your solution.

Mil1ium commented 2 years ago

@hard223123 Hi. 1) You can just IGNORE these "errors"; 2) One F9P is enough.

RTK is just for reference, you can send RTCM messages to the module when RTK is needed. If I remember correctly, the PVT message is for time sync and GVINS gets raw measurements from RAWX and SFRBX. When valid RTCM data is sent to F9P, RTK solution is obtained in PVT message.

Mil1ium commented 2 years ago

I wrote a little program NTRIP_ROS to get RTK solution which can be used with ublox_driver for real-time application (unlike str2str in RTKLIB). Check it out if needed.

Note that NTRIP_ROS recieve current position from ublox_driver and send it to NTRIP caster, then send recieved RTCM data to F9P module via its UART2.

Wait till carr_soln in pvt topic turning to 2, RTK solution is obtained.

ooww0123TW commented 11 months ago

@Mil1ium Thanks for kind explanation and great code NTRIP_ROS. If I understand correctly, an RTK solution should not have any impact on the following topics used in GVINS: /ublox_driver/ephem /ublox_driver/glo_ephem /ublox_driver/iono_params /ublox_driver/range_meas /ublox_driver/time_pulse_info

Is that correct?