Closed Mil1ium closed 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.
@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.
@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.
@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.
@Mil1ium hello, I have got trouble in running ublox_driver. I have some questions to ask.
Have you encountered these problems? And I would appreciate it if you could provide your solution.
@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.
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.
@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?
@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
becomes2
, just like this: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).