UM982 DIY Guide: Building a Centimeter-Level RTK Positioning System for Drones (With Configuration Code)

UM982 DIY Guide: Building a Centimeter-Level RTK Positioning System for Drones (With Configuration Code)

UM982 DIY Guide: Building a Centimeter-Level RTK Positioning System for Drones

Complete hands-on guide to building a dual-antenna RTK system with UM982 — hardware selection, firmware configuration, base station setup, Pixhawk integration, and flight testing.

When your drone requires centimeter-level positioning accuracy, traditional GPS modules fall short. The UM982 — a high-precision RTK module supporting five GNSS systems across full frequency bands — is redefining what's possible in consumer and prosumer drone positioning. This guide walks you through building a complete dual-antenna RTK system from scratch: hardware selection, firmware configuration, base station deployment, and flight testing.

1. Hardware Selection & System Architecture

Before deploying RTK on a drone, understand the UM982's core advantages. This 16×21mm module integrates 1408 super channels, simultaneously receiving multi-frequency signals from BDS, GPS, GLONASS, Galileo, and QZSS. Full-frequency support delivers three key real-world benefits:

  • Multi-path interference rejection: L5/E5 band signals penetrate more effectively, providing greater stability in urban environments
  • Fast convergence: Multi-frequency observation combinations accelerate ambiguity resolution — initialization time <5 seconds
  • Redundant backup: Automatically switches satellite systems when one is interfered with

Recommended hardware configuration:

Component Example Model Key Parameters Budget Range
UM982 Module UM982C CAN interface support $100
Primary Antenna ATGM332D-5N31 RHCP, 3dB gain $50
Secondary Antenna ATGM332D-5N32 Phase center stability <1mm $50
RTK Base Station HPL-EVK 5.0 4G data link support $900
Flight Controller Pixhawk 4 CAN interface $120
Pro tip: Dual-antenna spacing should be ≥0.5m for reliable heading accuracy. An M.2 adapter board simplifies installation.

Circuit connection considerations:

  • Main antenna interface: Use 50Ω impedance‑matched IPEX‑to‑SMA cable
  • UART1: Configure at 115200 bps for NMEA message output
  • CAN bus: Requires 120Ω termination resistor
  • Power supply: Add π‑type filter circuit (10μF + 0.1μF)
# UM982 pin definition example (48‑pin LGA package)
PIN_MAP = {
    'VCC':    (1, '3.3V±5%', '500mA max'),
    'GND':    (2, 'Ground', ''),
    'UART1_TX': (3, 'LVTTL', 'default 115200 bps'),
    'UART1_RX': (4, 'LVTTL', 'firmware upgrade'),
    'ANT1':   (5, 'Primary antenna', '50Ω impedance'),
    'ANT2':   (6, 'Secondary antenna', '50Ω impedance'),
    'CAN_H':  (7, 'CAN bus', 'requires 120Ω termination'),
    'CAN_L':  (8, 'CAN bus', '')
}

2. Firmware Configuration & RTK Operating Modes

The UM982 supports three high‑precision positioning modes. For DIY projects, we recommend the mobile station + local base station combination. In‑depth configuration is available through the SDK toolchain.

Key configuration steps:

  1. Flash the latest firmware (usually distributed as a .bin file)
  2. Set satellite system weighting — BDS+GPS dual‑system is optimal
  3. Configure RTCM3.2 differential protocol output
  4. Enable dual‑antenna heading algorithm
  5. Set IMU coupling mode (when connected to a flight controller)
# u-center configuration example
$ u-center -p /dev/ttyACM0 -b 115200

> CFG-MSG,RTCM1074,1,1   # Enable GPS MSM4
> CFG-MSG,RTCM1084,1,1   # Enable GLONASS MSM4
> CFG-MSG,RTCM1094,1,1   # Enable Galileo MSM4
> CFG-NAV5,1,0x03        # Enable flight mode

Base station deployment essentials:

  • Place the antenna in an open, unobstructed area
  • Use a tripod and precisely measure the antenna phase center
  • Differential data can be transmitted via 4G or LoRa wireless link
  • Recommend using RTKLIB's str2str tool for data forwarding
Note: When the distance between mobile station and base station exceeds 30 km, PPP mode should be enabled — accuracy will then degrade to approximately 5 cm.

3. Dual‑Antenna Heading Calibration & Flight Controller Integration

A dual‑antenna system achieves heading accuracy of 0.1° with a 1‑meter baseline — significantly better than the 1° accuracy typical of magnetic compasses. Follow the calibration process carefully:

Mechanical calibration:

  • Ensure the line connecting the two antennas is parallel to the drone's longitudinal axis
  • Use a laser level to measure mounting flatness
  • Record the relative position of the antenna phase centers

Software calibration:

  • Collect 30 minutes of raw observation data in static conditions
  • Analyze carrier phase residuals using RTKPLOT
  • Compensate for antenna delay differences
// ArduPilot driver snippet for UM982
void AP_GPS_UM982::inject_data(const uint8_t *data, uint16_t len)
{
    if (uart == nullptr) return;
    
    uart->write("$PUBX,00*33\r\n");  // Send synchronization header
    for (uint16_t i=0; i<len; i++) {
        uart->write(data[i]);
        if (data[i] == '\n') {
            uart->write('\r');
        }
    }
}

Key parameters for Pixhawk integration:

EKF2_GPS_TYPE = 1       # Enable GPS heading
EKF2_GPS_POS_X = 0.15   # Primary antenna X offset (m)
EKF2_GPS_POS_Y = 0      # Primary antenna Y offset (m)
EKF2_GPS_POS_Z = -0.1   # Primary antenna Z offset (m)
GPS_YAW_OFFSET = 0      # Heading compensation angle (deg)

4. Troubleshooting & Performance Optimization

Based on real flight tests, here are common issues and their solutions:

Issue Possible Cause Diagnostic Method Solution
RTK not fixed Base station data latency Check RTKSTATUS message Switch to TCP transport
Heading jumps Multipath interference Analyze GPGSV SNR Add ground plane
Position drift Ionospheric disturbance Compare dual‑frequency observations Enable IONEX correction
Slow cold start Outdated ephemeris Check AID-EPH Configure automatic EPH update

Performance optimization tips:

  • In UBX-CFG-NAV5, set dynamic platform mode to "Airborne <2g"
  • Enable DGNSS smoothing to improve standalone positioning accuracy
  • Configure UBX-CFG-ITFM anti‑jamming threshold (recommended value: 40 dB)
  • Monitor RF front‑end status via UBX-MON-RF

For agricultural drones requiring centimeter‑level accuracy, adopt the following flight strategy:

  1. Achieve RTK fixed solution before takeoff
  2. Keep base station distance to operating area <10 km
  3. Fly at least 3× obstacle height
  4. Regularly check carrier phase lock status
# Real‑time monitoring script example
import serial
from ubx import UBXManager

def check_rtk_status():
    ser = serial.Serial('/dev/ttyACM0', 115200)
    ubx = UBXManager(ser)
    while True:
        msg = ubx.poll('NAV-STATUS')
        if msg['flags']['rtkFixed']:
            print(f"RTK fixed solution | Accuracy: {msg['hAcc']} cm")
        else:
            print(f"Float solution | Accuracy: {msg['hAcc']} cm")
Real‑world performance: The system described achieves horizontal repeatable positioning accuracy of 1 cm + 1 ppm — fully meeting the demands of precision spraying, 3D mapping, and other professional applications. Total bill‑of‑materials cost can be kept under $500, offering significant value compared to commercial RTK systems.

5. Hardware Support & Resources

Ready to start building? This development platform provides testing software, application manuals, and rapid project setup:


All product names, trademarks, and registered trademarks are the property of their respective owners. Specifications and performance figures based on field testing and publicly available documentation. Actual results may vary depending on environmental conditions, antenna quality, and integration practices.

Previous post Next post

Hinterlasse einen Kommentar