-
Notifications
You must be signed in to change notification settings - Fork 48
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
Provide GNSS vectors #332
Comments
Update: Yesterday and today I attended the NGS's "OPUS Project Manager Training". Some things I learned: GNSS Vector processing is in OPUS Projects beta. The beta is available to any current OPUS Projects users. OPUS Projects beta is reading GNSS Vectors in the GVX file format. Trimble, TopCon, and Leica current support the GVX file format. Carlson, iGage, Emlid, and Javad are reportedly working on it. It's my understanding that the major GNSS survey receiver manufacturers will process, and have for some time now, GNSS vector data in a proprietary format using the proprietary software the manufacturers provide. The value of GNSS Vectors is that it will allow RTK observations (local base or RTN) to be included and adjusted in least squares processing software. If the vectors are in proprietary format, s/w that reads that manufacture's format will be required. If the GNSS Vectors are in GVX format, the vector data aren't locked in the proprietary walled garden. |
I found a forum post in which surveyors are discussing converting the format of GNSS vectors. It looks like the data in a GNSS Vector contains As best I can tell, here's a format recognized by Carlson and Star*Net (from the forum post)
I looked at a vector file one of my Carlson software tools wrote, and here's some sample data from it. I note this sample data is a similar format, but it includes the antenna heights in the G0 remark/comment field. My point numbers are 9001, LUDR, ECLG, AQCG, etc.
|
Here's a link to a Carlson manual describing the above format, or at least their variation of it.
|
Sorry, saw that up top. Given SparkFun's open source alignment, ti seems the code should head for GVX and people can deal with GVX/proprietary converters. |
Agreed about GVX and open formats. Hope more manufacturers adopt it. Perhaps the fact that NGS only accepts GVX vectors for OPUS Projects could drive adoption. I wasn't clear; I put in the info on those proprietary formats as info about the data necessary to construct GNSS vectors. The examples were clearer to me than the NGS GVX spec. Though that proprietary format is apparently the StarNet format, and StarNet appears to be widely used by the survey community for performing least squares adjustments of total station and GNSS vectors. It also appears Carlson has adopted the format, perhaps with variations, for GNSS vectors in their RW5 files (their data collectors 'electronic field book') and in their SurvNet files, SurvNet being Carlson's competitor to StarNet. Not advocating adoption this format, just sharing what I'm learning. I've been looking at UBlox interface spec to see if it can provides this data. There's a message that provides base-rover relative position data, with variance-covariance info, but it appears to be in NED orientation and not ECEF. |
Another tidbit of information, this time from the Carlson SurvPC version 7 release notes:
https://www.carlsonsw.com/api/wp-content/uploads/SurvPC-7.0-Release-Notes.pdf |
The GPS vectors provided in OPUS extended solutions are in the "GLOBAL POSITIONING SYSTEM DATA TRANSFER FORMAT", aka the "G File" format. |
|
Yes, it's still valid. Though I don't have a conceptual design or process in mind. Got nuthin' to say to the rubber duck. Would you be opposed to leaving this open while we figure things out? The end goal is to get mark-to-mark GNSS vectors associated with survey points that can be incorporated into a least squares adjustment. The vectors would be from the mark the base is over to the mark the rover is over. Surveyors commonly take redundant measurements and calculate a least squares adjustment (LSA) to determine best-fit coordinates for each mark (points) that is being surveyed. The LSA of the redundant measurements are a commonly accepted technique for a surveyor to check their work and calculate their accuracy. Surveyors need to meet certain accuracy standards and this is one way to determine if they met the standard. It's unclear to me if we get one vector per rover mark coordinates (aka a point) collected, or multiple vectors (e.g. 1Hz for 3 minutes = 180 vectors) per point. In a day of surveying someone might collect coordinates for 100s of marks (100s of points). As far as I can tell, today approaches for this are proprietary. Trimble GNSS receivers send the data to Trimble data collection software which saves it in Trimble format files to be read by Trimble desktop software. That all works well very well for Trimble users, but it doesn't help makers and open source developers and users. I believe we'd be plowing new ground here. Your questions #2 and #3 are insightful. Those are the problems we need to solve. I don't believe many, if any, of us are hitting the mark button on the SFE RTK receivers to save a point. We're hitting the store/save point button in whichever app we're using on our device (SWMaps, QField, SurvPC, etc.) I imagine in Trimble Land the Trimble data collector is receiving a stream of data from the GNSS Receiver, including GNSS Vector data, and the data collector s/w saves the vector information and the coordinates when user stores data for a point. GNSS surveyors generally collect data for 15 seconds or a couple minutes, so somehow that's reduced to one set of coordinates (averaging?) and one vector (least squares?) I imagine Trimble data collector also knows the height of the base over the mark and the height of the rover over the mark,, so it can calculate mark-to-mark vectors. We're not in Trimble Land. How would a maker - open source person accomplish the same goal? How to we get the small subset of vectors that correspond to the point we measured? Do we just save all the vectors--a days' worth--to a file on the SD care, and later use some TBD desktop software to extract out the few minutes of vectors that we need for our point? Some survey collectors (including SurvPC) save a file that specifies the time range data for a particular point was collected. That is, if our data collector is averaging 180 sets of coordinates (say 3 minutes @ 1Hz) for a point, do we then later use desktop software to select those 180 vectors out of the hours-long files of vectors using time stamps? Throw a few out at the beginning and end to account for time sync issues? Then what do we do with, say, the remaining 160 vectors? LSA them into one vector? How do we get mark-to-mark vectors from the base to the point we measured? The SFE RTK doesn't know the height above mark for the base or the rover. So I presume the vectors provided would be APC to APC. So would we need desktop s/w to use the heights above the mark, APC offsets, etc. to calculate mark-to-mark GNSS vectors? I searched to see what Emlid does about GNSS Vectors. This was all I could find. From the NGS's GVX Page: GVX elements include (but are not limited to) the following: [PS - There's a time-sync-point-collection-with-data-stream-to-select-data-subset pattern here that is similar to the problem of post-processing Stop-and-Go / PPK data. The GNSS Receiver streams a set of raw GNSS observations in the UBX (and eventually RINEX) file. We'd need to use time-syncing to get a subset of the raw GNSS observations that correspond to the time we occupied the mark and collected the data in our data collector. Then we can post-process the raw obs against the base (eg using RTKPOST) and select the output coordinate positions that correspond to the time range. Emlid does have a solution for this; if you give their desktop s/w a CSV with point names and time ranges in it, it will process the Base and Rover raw observation files and determine positions (coordinates) for each of the named points. ] |
Here's a Carlson video on what I want to be able to accomplish, which is using a least square adjustment (LSA) program on the GNSS vectors to improve accuracy. This video is specific to Carlson's SurvNet LSA software, but the first few minutes and the last few minutes give a good visualization of the general idea. One of the industry-leading LSA software packages is StarNet, and SurvNet uses similar file formats to StarNet. https://www.youtube.com/watch?v=AY11_3zsRKk The above video is #2 in a 3-video series. Here are links to the other videos in the series if you want a deep-dive. #1/3: https://www.youtube.com/watch?v=KHqqI4WXnQE These three videos show common use cases and demonstrate the value of using GNSS Vectors. |
File this in the Pipe Dreams drawer. :)
Subject of the issue
Provide GNSS vectors (from base to rover). A number of high-end survey-grade GNSS receivers provide GNSS vectors in addition to the coordinates of a recorded point, and corresponding data collectors collect this data. There appear to be a number of proprietary APIs and data formats between commercial data collectors and GNSS receivers to request and gather this data.
GNSS vectors can be used for high-precision processing of the survey data. An individual vector represents the line between the RTK base and the rover, and it includes error information. This data can be used, for example, in a least squares adjustment to apply statistical tests to the data and perform precision adjustments. Longer vectors (perhaps when using network bases) can be given less weight than shorter vectors. Vectors with better DOP, less noise, smaller sdevs, for example, can be given more weight than those with less-favorable characteristics.
The NGS proposed a non-proprietary format for this data:
https://geodesy.noaa.gov/data/formats/GVX/index.shtml
At least one data collector can use this vector data in real time to perform advanced averaging of the GNSS observations to determine the mark coordinates. Mark Silver says this functionality has been in SurvCE since 2013. The opening moments of his video describe its usefulness.
https://www.youtube.com/watch?v=umiRftGkd3A
I'm really not sure how the (proprietary?) interfaces between the GNSS receiver and the data collectors work; does the GNSS receiver continually transmit the vectors intermixed with the NMEA stream and the data collector grabs a vector (along with the NMEA position report) when the surveyor uses the data collector to measure a point?
There is a F9P message that provides base-rover vectors, apparently this is used when the base and rover are both fixed to a moving platform (drone) and intended to be used for heading determination. Is this the same vector that the NGA and Mark Silver are talking about?
I'm not even sure what I'm asking the RTK Firmware to do.
Well, thanks for reading this!
Expected behavior
System to provide GNSS vectors for processing by adjustment software.
The text was updated successfully, but these errors were encountered: