tomojitakasu / RTKLIB

2.58k stars 1.63k forks source link

Some problem about RTKLIB rtkrcv and str2str #99

Open tednav opened 9 years ago

tednav commented 9 years ago

Hello everyone: I use two Ublox lea-6t to testing RTKLIB on Linux,First,I use one for base station,I use str2str to transfer data from UBX to RTCM3 the command is : ./str2str -in serial://ttyUSB0:115200:8:n:1:off#ubx -out serial://ttyAMA0:115200:8:n:1:off#rtcm3 from the screen I can see the data is send out.Then I use another as rover station,in the config file I set the right inpstr2-type/path,and fromat is rtcm3. I run the rtkrcv on the rover station,after 20 minutes the solution is single ,I can't get float or fix solution.what's wrong? I think the problem is str2str command,the rover station can't get the right base station,because I didn't use RTKLIB before so I don't know How to slove it.Can somebody tell me?

DavidKelleySCSC commented 9 years ago

teduav: This issue seems to come up quite a lot. There seems to be quite a few folks with a pair of 6T units that a direct FAQ for just for that need seems to be in order.

But to your question. Many things could be wrong, let's take it one step at a time. Off topic, your speeds are rather high, 19,200 will do and give you slightly better reliability. In the RTKlib code, If your RTK solution is getting raw observables from both sides, AND the antenna position, you will see it move from autonomous ("single" in RTK terms)
to float almost immediately. [You do have the filter set to do "kinematic" right, the RTKLIB term for RTK] In fact the only delay one typically observes (with current orbits) is that most base stations only send their location message once every 10~15 seconds.

You say you see it getting a single fix, that confirms you are getting raw observables from the rover and orbital data from somewhere (probably the rover). But not any float/fix. That suggests a bad base station stream of raw observables or (more likely) that the position of the base station is not known by the RTK filter. Two points to keep in mind: a) the green led means that RTK navi got data not that it decoded and used data. Use the monitor to confirm you see decoded raw observables, and b) you have to expressly tell the filter where the base station is located. If you are not sending it that key bit of data by RTCM (and telling RTKLIB to get it from there) or setting it directly, then the filter cannot use the base station stream of raw observable and you will never leave 'single' mode.

I would be looking at the filter set up and first try and hard code in the base location value (ECEF or LLH). On the RTKNAVI GUI that found under the tab called "Positions" and a combo box marked Base Station.
Sorry I am at home cannot go look at a console device for the setup parameter for console use.

I do not know how you tell a uBlox and RTKlib to make the RTCM message 1006 (that is the one with the location). Perhaps other know that part of the setup, as ideally you do not want to have to change it. If you cannot get the uBlox/RTKLIB combo to send the 1006 message I do not think you have any other choice than to hard code it.

But I am willing to bet as soon as you get this last data item working, you will move into float mode. Good luck, David Kelley

On 8/2/2015 7:55 PM, teduav wrote:

Hello everyone: I use two Ublox lea-6t to testing RTKLIB on Linux,First,I use one for base station,I use str2str to transfer data from UBX to RTCM3 the command is : ./str2str -in serial://ttyUSB0:115200:8:n:1:off#ubx -out serial://ttyAMA0:115200:8:n:1:off#rtcm3 from the screen I can see the data is send out.Then I use another as rover station,in the config file I set the right inpstr2-type/path,and fromat is rtcm3. I run the rtkrcv on the rover station,after 20 minutes the solution is single ,I can't get float or fix solution.what's wrong? I think the problem is str2str command,the rover station can't get the right base station,because I didn't use RTKLIB before so I don't know How to slove it.Can somebody tell me?

— Reply to this email directly or view it on GitHub https://github.com/tomojitakasu/RTKLIB/issues/99.

Regards, David Kelley ITS Programs Manager SubCarrier Systems Corp. (SCSC) 626-485-7528 (Cell) 626-513-7715 (Office)

tednav commented 9 years ago

David Kelley, Thank you for your answer,I will do as you say. I'm a student and I want to testing the RTKLIB. I didn't use it before,so I have a lot of problems. I'm trying to learn form the RTKLIB manual.I think you can be my RTKLIB teacher and give me some useful advice.Let's keep in touch,OK?

Best regards! Teduav

2015-08-03 12:18 GMT+08:00 DavidKelleySCSC notifications@github.com:

teduav: This issue seems to come up quite a lot. There seems to be quite a few folks with a pair of 6T units that a direct FAQ for just for that need seems to be in order.

But to your question. Many things could be wrong, let's take it one step at a time. Off topic, your speeds are rather high, 19,200 will do and give you slightly better reliability. In the RTKlib code, If your RTK solution is getting raw observables from both sides, AND the antenna position, you will see it move from autonomous ("single" in RTK terms) to float almost immediately. [You do have the filter set to do "kinematic" right, the RTKLIB term for RTK] In fact the only delay one typically observes (with current orbits) is that most base stations only send their location message once every 10~15 seconds.

You say you see it getting a single fix, that confirms you are getting raw observables from the rover and orbital data from somewhere (probably the rover). But not any float/fix. That suggests a bad base station stream of raw observables or (more likely) that the position of the base station is not known by the RTK filter. Two points to keep in mind: a) the green led means that RTK navi got data not that it decoded and used data. Use the monitor to confirm you see decoded raw observables, and b) you have to expressly tell the filter where the base station is located. If you are not sending it that key bit of data by RTCM (and telling RTKLIB to get it from there) or setting it directly, then the filter cannot use the base station stream of raw observable and you will never leave 'single' mode.

I would be looking at the filter set up and first try and hard code in the base location value (ECEF or LLH). On the RTKNAVI GUI that found under the tab called "Positions" and a combo box marked Base Station. Sorry I am at home cannot go look at a console device for the setup parameter for console use.

I do not know how you tell a uBlox and RTKlib to make the RTCM message 1006 (that is the one with the location). Perhaps other know that part of the setup, as ideally you do not want to have to change it. If you cannot get the uBlox/RTKLIB combo to send the 1006 message I do not think you have any other choice than to hard code it.

But I am willing to bet as soon as you get this last data item working, you will move into float mode. Good luck, David Kelley

On 8/2/2015 7:55 PM, teduav wrote:

Hello everyone: I use two Ublox lea-6t to testing RTKLIB on Linux,First,I use one for base station,I use str2str to transfer data from UBX to RTCM3 the command is : ./str2str -in serial://ttyUSB0:115200:8:n:1:off#ubx -out serial://ttyAMA0:115200:8:n:1:off#rtcm3 from the screen I can see the data is send out.Then I use another as rover station,in the config file I set the right inpstr2-type/path,and fromat is rtcm3. I run the rtkrcv on the rover station,after 20 minutes the solution is single ,I can't get float or fix solution.what's wrong? I think the problem is str2str command,the rover station can't get the right base station,because I didn't use RTKLIB before so I don't know How to slove it.Can somebody tell me?

— Reply to this email directly or view it on GitHub https://github.com/tomojitakasu/RTKLIB/issues/99.

Regards, David Kelley ITS Programs Manager SubCarrier Systems Corp. (SCSC) 626-485-7528 (Cell) 626-513-7715 (Office)

— Reply to this email directly or view it on GitHub https://github.com/tomojitakasu/RTKLIB/issues/99#issuecomment-127118529.

tednav commented 9 years ago

Hi, Here is a file explain what I have down and the problem I have meet.Can you give me some advice? Thank you very much!

Best Regards!

2015-08-03 14:41 GMT+08:00 邓一民 dymxyz@gmail.com:

David Kelley, Thank you for your answer,I will do as you say. I'm a student and I want to testing the RTKLIB. I didn't use it before,so I have a lot of problems. I'm trying to learn form the RTKLIB manual.I think you can be my RTKLIB teacher and give me some useful advice.Let's keep in touch,OK?

Best regards! Teduav

2015-08-03 12:18 GMT+08:00 DavidKelleySCSC notifications@github.com:

teduav: This issue seems to come up quite a lot. There seems to be quite a few folks with a pair of 6T units that a direct FAQ for just for that need seems to be in order.

But to your question. Many things could be wrong, let's take it one step at a time. Off topic, your speeds are rather high, 19,200 will do and give you slightly better reliability. In the RTKlib code, If your RTK solution is getting raw observables from both sides, AND the antenna position, you will see it move from autonomous ("single" in RTK terms) to float almost immediately. [You do have the filter set to do "kinematic" right, the RTKLIB term for RTK] In fact the only delay one typically observes (with current orbits) is that most base stations only send their location message once every 10~15 seconds.

You say you see it getting a single fix, that confirms you are getting raw observables from the rover and orbital data from somewhere (probably the rover). But not any float/fix. That suggests a bad base station stream of raw observables or (more likely) that the position of the base station is not known by the RTK filter. Two points to keep in mind: a) the green led means that RTK navi got data not that it decoded and used data. Use the monitor to confirm you see decoded raw observables, and b) you have to expressly tell the filter where the base station is located. If you are not sending it that key bit of data by RTCM (and telling RTKLIB to get it from there) or setting it directly, then the filter cannot use the base station stream of raw observable and you will never leave 'single' mode.

I would be looking at the filter set up and first try and hard code in the base location value (ECEF or LLH). On the RTKNAVI GUI that found under the tab called "Positions" and a combo box marked Base Station. Sorry I am at home cannot go look at a console device for the setup parameter for console use.

I do not know how you tell a uBlox and RTKlib to make the RTCM message 1006 (that is the one with the location). Perhaps other know that part of the setup, as ideally you do not want to have to change it. If you cannot get the uBlox/RTKLIB combo to send the 1006 message I do not think you have any other choice than to hard code it.

But I am willing to bet as soon as you get this last data item working, you will move into float mode. Good luck, David Kelley

On 8/2/2015 7:55 PM, teduav wrote:

Hello everyone: I use two Ublox lea-6t to testing RTKLIB on Linux,First,I use one for base station,I use str2str to transfer data from UBX to RTCM3 the command is : ./str2str -in serial://ttyUSB0:115200:8:n:1:off#ubx -out serial://ttyAMA0:115200:8:n:1:off#rtcm3 from the screen I can see the data is send out.Then I use another as rover station,in the config file I set the right inpstr2-type/path,and fromat is rtcm3. I run the rtkrcv on the rover station,after 20 minutes the solution is single ,I can't get float or fix solution.what's wrong? I think the problem is str2str command,the rover station can't get the right base station,because I didn't use RTKLIB before so I don't know How to slove it.Can somebody tell me?

— Reply to this email directly or view it on GitHub https://github.com/tomojitakasu/RTKLIB/issues/99.

Regards, David Kelley ITS Programs Manager SubCarrier Systems Corp. (SCSC) 626-485-7528 (Cell) 626-513-7715 (Office)

— Reply to this email directly or view it on GitHub https://github.com/tomojitakasu/RTKLIB/issues/99#issuecomment-127118529 .

tednav commented 9 years ago

The problem I meet is here: http://community.emlid.com/t/some-problem-about-rtknavi-and-strsvr/742

DavidKelleySCSC commented 9 years ago
Nicely done set of images in your link.
It is plan from this you have not set the location of the base
station, either on the sending side or on the rover side.

Keep in mind that the whole "common mode double difference" of RTK
is based on creating a very long triangle with two 12000 mile long
legs between the base and SVs and the rover and the SVs and then
solving for the 'tiny" sliver between - the offset between the base
and the rover.  And also bear in mind that the base station is God
in that what it says (in this case its location) is not disputable,
so when this does work it is only as good as your base station
location is. 

Here is how to fix it,  Look closely at the image below these two
entries: 
6)Setup the STRSVR options   and
5)Setup the positions options (Maybe some thing is wrong here,but I
don’t know)

In  "6)Setup the STRSVR options..."  you need to tell it the LLH to
use - put you best guess of the base location here.

In "5)Setup the positions options..."  you have told it to wait for
and use the location coming over RTCM, 
but the above dialog is not sending anything yet.  

You can either a) leave this as is and get the "caster" (STRSVR in
this case) to send the data, or b) put the same information you
  used for the base station location here.  I would try the
later just to see it work more quickly.  

I am a bit confused by the apparent use of a serial port here,
expecting to see NTRIP, but in all cases the rover needs the
location of the base station to operate with the corrections. 

Your last image shows the base station stream in hex, try the format
"RTCM 3" and confirm you see a list with lines line
RTCM 1004 (byte cnt):  time stamp  nsat=x  sync=x
RTCM 1004 (byte cnt):  time stamp  nsat=x  sync=x
RTCM 1006 (byte cnt):  time stamp  nsat=x  sync=x

This is used to confirm you are getting, and decoding, the message
content you expect.  

On 8/3/2015 6:46 PM, teduav wrote:

  The problem I meet is here:
    http://community.emlid.com/t/some-problem-about-rtknavi-and-strsvr/742
  —
    Reply to this email directly or view
      it on GitHub.

-- 

Regards, David Kelley ITS Programs Manager SubCarrier Systems Corp. (SCSC) 1833 East Foothill Blvd. Glendora, CA USA 91741 626-485-7528 (Cell) 888-950-8747 (Main) 626-513-7715 (Office) 888-613-0757 (Fax) DavidKelley@ITSware.net

tednav commented 9 years ago

Hello David, I have done as what you said,but failed.I found the most important question is the rover station didn't receive the RTCM3 data,because when I turn the base station fromat into the RTCM3 there is nothing.But in the hex,I can see the data increasing,what's wrong?

tednav commented 9 years ago

image image

DavidKelleySCSC commented 9 years ago

teduav: I think that this must not be RTCM, when I use that monitor setting on a good stream here is what I see (the top part shows the raw bytes of RTCM, then the switch was done and you see message decoder summaries) screenshot - 8_7_2015 9_43_48 am

FYI, uBlox binary frames start with 0xB562, while most RTCM r3 messages start with 0xD3.

Please capture a short file from this stream (~60 seconds) and post it up so self/others can determine what you are in fact getting.

tednav commented 9 years ago

Hello David, Thank you for you advice ! I have done Float in the end. The problem is I can't get the right RTCM3 data,How foolish I am.Next I will transplant it on linux. I don't now how to get base station location in the str2str command and send it out.I will learn the manual first. If I have some problem, I hope you can teach me how to solve it. Best Regards!
rtk7

nopeppermint commented 9 years ago

Hi tedev how to get base station location in the str2str command and send it out. Just read the manual http://www.rtklib.com/prog/manual_2.4.2.pdf page 101

I use the following options with a Ublox M8N with GPS and Glonass enabled:

./str2str -in serial://ttyACM0:921600:8:n:1:off#ubx -t 1 -out serial://ttyUSB0:115200:8:n:1:off#rtcm3 -c ../data/ubx_m8n_glo_raw_10hz.cmd -msg "1002, 1006, 1008, 1010, 1019, 1020, 1033" -p "52.14271937 3.244610005 502.222"

There is a bug in the str2str code, which you have to fix before you are able to send the base station position with str2str over rtcm3 https://github.com/tomojitakasu/RTKLIB/pull/93/files

tednav commented 9 years ago

Hi,nopepper: I use this command:./str2str -in serial://ttyUSB0:9600:8:n:1:off#ubx -out serial://ttyAMA0:57600:8:n:1:off#rtcm3 -msg 1002,1006,1013,1019 -p 31.94270531 118.78575612 30.814 From another PC I have got this qq 20150809212128 qq 20150809212315

tednav commented 9 years ago

There is just Single, after nearly five minute.

tednav commented 9 years ago

Hi,erveryone I use this command:./str2str -in serial://ttyUSB0:9600:8:n:1:off#ubx -out serial://ttyAMA0:57600:8:n:1:off#rtcm3 -msg 1002,1006,1013,1019 -p 31.94270531 118.78575612 30.814 There is just RTCM 1002,Why?
image

nopeppermint commented 9 years ago
  1. are you sure ttyUSB0 is the Ublox device (not something like ttyACMx)?
  2. I would increase the baudrate to the Ublox device higher then the output baudrate
  3. add " -p "31.94270531 118.78575612 30.814"
  4. add " -msg "1002,1006,1013,1019"
  5. are you sure there is no -c ../data/xxx required with Ublox lea-6t ?
  6. do you fixed the bug mention here https://github.com/tomojitakasu/RTKLIB/pull/93/files before you compiled your str2str application ?
Roanish commented 9 years ago

You are choosing to re encode the out bound stream as RTCM3, and then supplying the -msg option. Part of your problem is what you are trying to encode.

Your receiver seems to supply as 1004 and 1012 compatible message (GPS and GLONASS). I don't see a station message (1006) in any of your previous posts.

Looking at the source for the rtcm3 encoder, there is no support for 1013 messages, so don't specify it in the msg flag.

Try the following -msg format: -msg "1004(1),1005(10),1008(10),1012(1)"

Also note: it depends on what is being decoded by the ublx decoder on the way in as to what functionality you can expect from the rtcm3 encoder on the way out.

report back.

DavidKelleySCSC commented 9 years ago

I have gotten a bit confused regarding the goals of teduav in this thread. When last I looked, you had RTK running fine in fixed mode using what looked like STRSVR sending the raw uBlox data from one point to the other. If that is working for you, skip the NTRIP and RTCM part and all you have to do it program your base station location. Important Aside: This data flow has the additional benefit that you are giving RTKLIB very valuable raw Doppler data to use from the raw uBlox data stream that is regrettably lost if you convert to RTCM. If you can, I recommend you stick with this configuration.

If you are still using the 6T units here, you are only going to get L1 1002/1004 measurement content from the uBlox (no GLONASS, no L2). Also keep in mind that STRSVR is not itself an NTRIP caster, it is intended to send data to such a caster. But unless you need connections for more than one user at once, you really do not need a caster. Just use a serial port and a broadcast radio, or TCP server over whatever RF wifi you can set up. Another aside: In just over a month (just after the next ION meetings) our firm will place a community edition (read: free) version of our commercial NTRIP caster out for others to use, makes some of these problems simpler.

Keep in mind that if you say both 1002,1004 in your message types, you will in fact get both (the L2 parts of 1004 will simply be empty) - 1002 is all you need for this use case. In a similar fashion, do not ask for 2012, all you will get is an 8 octet empty message frame. Be sure and run the patch which nopeppermint mentioned to get content for your 1005 message (or else you will need to code this at each rover). I presume that as you are using a radio, bandwidth is precious. So I think you want a string more like: 1002(1),1005(10)

tednav commented 9 years ago

Hello David, I have a question to ask you again.When I download this code,get into the "/app/rtkrcv/gcc".using make to build rtkrcv,then I run the rtkrcv and load the config file,but after few minutes I still can't get the single solution. What's wrong with it? Should I change some thing before I build rtkrcv?

DavidKelleySCSC commented 9 years ago

You are not giving myself, or the list members, enough data to be of help. Lets first take a look at your config file. remove any accesses password IDs you have in there and please post it. As far as I am aware rtkrcv works "out of the box" on *nix but I will ask other once back in the office. Regards, David Kelley

On 9/11/2015 5:48 AM, teduav wrote:

Hello David, I have a question to ask you again.When I download this code,get into the "/app/rtkrcv/gcc".using make to build rtkrcv,then I run the rtkrcv and load the config file,but after few minutes I still can't get the single solution. What's wrong with it? Should I change some thing before I build rtkrcv?

— Reply to this email directly or view it on GitHub https://github.com/tomojitakasu/RTKLIB/issues/99#issuecomment-139537619.

Regelink commented 8 years ago

teduav, please pay attention to the format of the command line arguments you supply (str2str may not always reject wrong arguments and might just start doing the wrong thing). The list of RTCM message types supplied after -msg must be surrounded by double quotes. In contrast, the latitude, longitude and altitude supplied after -p must NOT be surrounded by double quotes. I bet you only got 1002 messages because str2str did not recognize the remainder of the list. Try the slightly modified command from nopeppermint:

_./str2str -in serial://ttyACM0:921600:8:n:1:off#ubx -out serial://ttyUSB0:115200:8:n:1:off#rtcm3 -c ../data/ubx_m8n_glo_raw_10hz.cmd -t 1 -msg "1002,1006,1008,1010,1019,1020,1033" -p 52.14271937 3.244610005 502.222_

Myself, I made the mistake of supplying options before -in stream and -out stream which I found to be in the wrong order after reading the usage instructions printed by str2str.

RTKproject commented 8 years ago

Hi Everyone

I probably should not have asked my question here but i dint find anywhere better. I am using two UBLOX NEO-M8T receivers along a raspberry Pi and a tallysman 3400 antenna as well as two Xbee modules to transmit data. Now the question i have is how can i implement this RTK GPS on raspberry pi. i have read alot of manuals as well as RTKLIB but still have issues, Please guide me through if you have any valuable ideas,

Kind Regards, Ben

ywanggithub commented 8 years ago

Has anyone tried to run the sample data from the Tutorial oemv_20090515c.gps for rover and 0263_20090515c.rtcm3 for base with RTKNAVI and RTKRCV? With the same configure file, RTKNAVI got many "fix" while RTKRCV only got "single". If teduav still did not get the fix, the problem might not be the STR2STR nor the observation data. It could be the problem of RTKRCV. The sample data provided by the Tutorial should be able to obtain fix solutions. Does RTKRCV has a bug?
I attached the two solution files sample.lnx from Linux and sample.win from Window. The solution files are cropped to reduce the file size. There are no base station data at the beginning of these sample data. After 12:16:13 AM, base station data was heard and sample.win showed the fix but sample.lnx had all "single". I saved the configure file after I ran RTKNAVI and copied and modified it to my Linux machine to run RTKRCV to make sure they both ran under the same configuration.

rtklibsample.zip

linkaiqin commented 8 years ago

Hi ywanggithub
I face the same problem with you. I find the .tag file created by rtknavi and rtkrcv is different . The size of Time-Tag protocol header are 80 bytes created by rtknavi and 76 bytes created by rtkrcv. It seems the difference of the size of gtime_t cause the problem.The size of gtime_t are 16 bytes In c++ builder compiler and 12 bytes in gcc compiler.

ywanggithub commented 8 years ago

Thank you very much, linkaiqin. I did find rtkrcv interpreted time differently from rtknavi did to cause the problem. Do you have a solution for it? Shall we need to add gcc+ to compile the source?

linkaiqin commented 8 years ago

Hi ywanggithub

The time tag file structure in rtknavi /* HEADER(60)+TICK(4)+TIME(16)+ / / TICK0(4)+FPOS0(4/8)+ / / TICK1(4)+FPOS1(4/8)+... */

While the time tag file structure in rtkrcv /* HEADER(60)+TICK(4)+TIME(12)+ / / TICK0(4)+FPOS0(4/8)+ / / TICK1(4)+FPOS1(4/8)+... */

Just modify the structrue of gtime_t in rtklib.h like below, it will change the size of gtime_t from 12 bytes to 16 btyes under gcc compiler. typedef struct { /* time struct */ time_t time; /* time (s) expressed by standard time_t */ __attribute__ ((aligned (8)))double sec; /* fraction of second under 1 s */ } gtime_t;

ywanggithub commented 8 years ago

Thank you very much for the help. But, after I made the change, my rtkrcv still got very large differential error age=-604799.6. But, from the trace file, it got the correct date at least. Previously it got May 24 and May 22. My gcc version is gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC). Do you think I used wrong gcc for compiling this? Or, do I need to take care of other places for this time mismatch issue.

linkaiqin commented 8 years ago

Hi ywanggithub

rtkrcv makefile has issue that some source files not depend on rtklib.h such as stream.c, so you should run make clean to ensure all source files will be compiled after modifying rtklib.h.

What type of receiver did you used and the system time was correct? If you can send me the debug trace file(add the option -t 4) or log file, I can help you better.

ywanggithub commented 8 years ago

Thank you very much, Keiqin. I did "make clean and make". But, I got the same thing. I just tried the example data as I mentioned previously. I ordered receivers are not arrived yet. Can I send you my trace file and log files directly? Can we have this conversation off line? My direct email is yinyan.wang@nokia.com. I appreciate your offer very much.

ywanggithub commented 8 years ago

Hi, linkaiqin, From the debug trace, I still found this wrong time decode for the reference file: decode_head1001: time=2009/05/24 20:18:44.00 nsat=9 sync=0. It suppose to be 2009/05/15 hh:mm:ss.ss.

mdgrogan commented 8 years ago

Hello ywanggithub, I've run into the same problem as you with the same trace output. I am wondering if you ever resolved your issue?

ywanggithub commented 8 years ago

Hi, mdgrogan, No, I did not. I gave up since RTKLIB works no problem for my data.

mdgrogan commented 8 years ago

ywanggithub, could please clarify in what way you have no problems with your data? Was the problem with the sample data alone or do you not require a fix solution?

ywanggithub commented 8 years ago

mdgrogan, the problem was with the sample data alone. rtkrcv works for my data.