|
1 | 1 | # swiftnav-rs
|
| 2 | +`swiftnav-rs` is a library that implements GNSS utility functions to perform |
| 3 | +position estimations. The data used by `swiftnav-rs` typically comes from GNSS |
| 4 | +receiver chips as raw observation and ephemeris data. `swiftnav-rs` is more of |
| 5 | +a "bring your own algorithm" library, it provides a bunch of functionality that |
| 6 | +is useful when processing raw GNSS data, but it provides only limited position |
| 7 | +estimation capabilities. Each module encompasses a single set of functionality, |
| 8 | +and they are meant to be pretty self-explanatory for developers familiar with |
| 9 | +GNSS processing. |
2 | 10 |
|
3 |
| -`swiftnav-rs` is a crate that implements GNSS utility functions for use by |
4 |
| -software-defined GNSS receivers or software requiring GNSS functionality. It is |
5 |
| -intended to be as portable as possible and has limited dependencies. |
| 11 | +GNSS systems are used to estimate the location of the receiver by determining |
| 12 | +the distance between the receiver and several satellites. The satellites send |
| 13 | +out precisely timed periodic messages and the receiver measures the delay |
| 14 | +of those messages. Knowing the location of the satellites at the time of |
| 15 | +transmission and the delays of the messages the receiver is able to determine |
| 16 | +the location of itself in relation to the satellites. |
6 | 17 |
|
7 |
| -`swiftnav-rs` does not provide any functionality for communicating with Swift |
8 |
| -Navigation receivers. See [libsbp](https://github.com/swift-nav/libsbp) to |
9 |
| -communicate with receivers using Swift Binary Protocol (SBP). |
| 18 | +`swiftnav-rs` does not provide any functionality for communicating with |
| 19 | +receivers made by Swift Navigation, or any manufacturer. |
| 20 | +[libsbp](https://github.com/swift-nav/libsbp) is the library to use if you |
| 21 | +want to communicate with receivers using Swift Binary Protocol (SBP). |
| 22 | + |
| 23 | +## Time |
| 24 | +Time is a very important aspect of GNSS. `swiftnav-rs` defaults to representing |
| 25 | +all times as GPS times. It provides the ability to manipulate GPS time stamps, |
| 26 | +as well as means to convert a GPS time stamp into various other time bases |
| 27 | +(GLONASS time, UTC, MJD). |
| 28 | + |
| 29 | +## Coordinates |
| 30 | +Several different coordinate types have representations and the ability to |
| 31 | +convert between them. Earth centered earth fixed (ECEF), Latitude longitude and |
| 32 | +height (both in radians and degrees), and Azimuth and elevation coordinates are |
| 33 | +available. |
| 34 | + |
| 35 | +## Ephemeris |
| 36 | +Decoding and evaluation of broadcast ephemeris for all major GNSS constellations |
| 37 | +is made available. You are able to calculate the satellite position at a |
| 38 | +particular point in time in several different coordinates. |
| 39 | + |
| 40 | +## Troposphere and Ionosphere |
| 41 | +Two major sources of signal error in GNSS are the troposphere and ionosphere. |
| 42 | +`swiftnav-rs` provides the ability to decode and use the broadcast Klobuchar |
| 43 | +ionosphere model. An implementation of the UNM3m troposphere model is also |
| 44 | +provided. |
| 45 | + |
| 46 | +## Single epoch position solver |
| 47 | +A simple least squares position solver is also included. This allows you to |
| 48 | +get an approximate position with GNSS measurements from a single point in time. |
| 49 | +It uses a least squares algorith, so no state is maintained between solves. |
| 50 | +This can be used to seed your own position estimation algorithm with a rough |
| 51 | +starting location. |
10 | 52 |
|
11 | 53 | ## Publishing a new release
|
12 | 54 |
|
|
0 commit comments