> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nomadicml.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GPS

> Geographic position as foxglove.LocationFix.

Publish GPS as **`foxglove.LocationFix`** messages on **one channel** of their own, e.g.
`/gnss/fix`. The channel is found by its schema and needs no overlay declaration.

| Field | Requirement |
| - | - |
| `latitude`, `longitude` | MUST be WGS84 degrees. |
| `altitude` | MAY be set, metres. |
| `position_covariance`, `position_covariance_type` | MAY be set. |

* Fixes are timed by their MCAP `log_time`, like signals.
* Publish **only valid fixes**. Drop a fix rather than send NaN or out-of-range values. A fix at
  exactly `0, 0` is always discarded, because that is what an unset protobuf field decodes to.
* Publish **one** fix channel. With several, the first by topic name is used and the others are
  ignored with a warning.
* A usable track needs at least **two valid fixes** at or after the first video frame. Fixes are
  kept at up to 10 per second.
* When the position is **derived** rather than measured (e.g. from a map-frame pose and a
  georeference), say so in the overlay's free-form `source` object, e.g.
  `"source": {"gps": "derived_from_ego_pose"}`. The message itself has no provenance field.

Do not publish latitude and longitude as [signals](/mcap-spec/signals). They are accepted as
signals, but they do not form a GPS track.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.