# GPS & Compass
PX4 supports global navigation satellite systems (GNSS) (including GPS, GLONASS, Galileo, BeiDou, QZSS and SBAS) using receivers that communicate via the u-blox, MTK Ashtech or Emlid protocols, or via UAVCAN. It also supports Real Time Kinematic (RTK) GPS Receivers, which extend GPS systems to centimetre-level precision.
PX4 can be used with the following compass parts (magnetometers): Bosch BMM 150 MEMS (via I2C bus), HMC5883 / HMC5983 (I2C or SPI), IST8310 (I2C) and LIS3MDL (I2C or SPI). Up to 4 internal or external magnetometers can be connected, though only one will actually be used as a heading source. The system automatically chooses the best available compass based on their internal priority (external magnetometers have a higher priority). If the primary compass fails in-flight, it will failover to the next one. If it fails before flight, arming will be denied.
When using Pixhawk-series flight controllers, we recommend using a combined GPS + Compass mounted as far away from the motor/ESC power supply lines as possible - typically on a pedestal or wing (for fixed-wing). The internal compass may be useful on larger vehicles (e.g. VTOL) where it is possible to reduce electromagnetic interference by mounting the Pixhawk a long way from power supply lines. On small vehicles an external compass is almost always required.
# Supported GPS and/or Compass
- ✓ or a specific part number indicate that a features is supported, while ✗ or empty show that the feature is not supported. "?" indicates "unknown".
- Where possible and relevant the part name is used (i.e. ✓ in the GPS column indicates that a GPS module is present but the part is not known).
- Avionics Anonymous UAVCAN Magnetometer (opens new window) is a compass (not a GPS).
- Some RTK modules can only be used in a particular role (base or rover), while others can be used interchangeably.
# Hardware Setup
Instructions for connecting the GPS (and compass, if present) are usually provided by the manufacturer (at least for more common Autopilot Hardware).
Pixhawk Series controllers typicaly have a clearly labeled port for connecting the GPS, and the compass is connected to either the I2C or SPI port/bus (depending on the device).
Pay attention to pinout when connecting the GPS module. While these are all software-compatible, there are several different pin orderings.
The "standard" GPS/compass configuration is provided below. Additional device-specific configuration may be provided in PX4 or manufacturer device documentation (e.g. Trimble MB-Two > Configuration).
The GPS protocol defaults to u-blox (by default other GPS types like Trimble, Emlid, MTK, will not be detected) The protocol can be configured with GPS_x_PROTOCOL.
# Configuring the Primary GPS
GPS configuration on Pixhawk is handled transparently for the user - simply connect the GPS module to the port labeled GPS and everything should work.
The default Serial Port Configuration works for most devices. If you are using the Trimble MB-Two you will need to modify the configuration to explicitly set the rate to 115200 baud.
# Configuring a Secondary GPS (Dual GPS System)
The following steps show how to configure a secondary GPS on the
TELEM 2 port in QGroundControl:
- Open QGroundControl and navigate to the Vehicle Setup > Parameters section.
- Select the GPS tab (1), then open the GPS_2_CONFIG parameter (2) and select TELEM 2 from the dropdown list (3).
- Reboot the vehicle in order to make the other parameters visible.
- Select the Serial tab, and open the SER_TEL2_BAUD parameter (
TELEM 2port baud rate): set it to Auto.
After setting up the second GPS port:
- Configure the ECL/EKF2 estimator to blend data from both GPS systems. For detailed instructions see: Using the ECL EKF > Dual Receivers.
# Configuring GPS as Yaw/Heading Source
When using GPS for yaw fusion you will need to configure the following parameters:
|GPS_YAW_OFFSET||The angle made by the baseline (the line between the two GPS antennas) relative to the vehicle x-axis (front/back axis, as shown here).|
|EKF2_AID_MASK||Set bit position 7 "GPS yaw fusion" to |
- If using this feature, all other configuration should be setup up as normal (e.g. RTK Positioning).
# Compass Configuration
Compass calibration is covered in: Compass Configuration. The process is straightforward and will calibrate all connected magnetometers.
Additional configuration can be performed using the CALMAGx parameters (where
x=0-3). Generally you will not need to modify these as compasses are autodetected, prioritised and are all calibrated at the same time (a possible exception is CAL_MAGx_EN which might be used to disable an internal compass). You may however wish to read them, as they will let you know which magnetometers are internal or external (CAL_MAGx_EN) and which is being uses as the main heading source (CAL_MAG_PRIME).