wiki:expansion/gw16143

Version 16 (modified by Tim Harvey, 3 years ago) ( diff )

updated quick start

GW16143 High Precision GNSS / GPS Mini-PCIe Card

High Precision GPS Adapter Photo

The GW16143 is a high precision GPS Mini-PCIe card designed to provide precise positioning to applications utilizing Gateworks single board computers. It provides centimeter-level (<2cm) accuracy via GNSS positioning with concurrent reception of GPS, GLONASS, Galileo and BeiDou after receiving RTK fix data.

This is a wiki page about how to use the GW16143.

Please view the actual product page on the Gateworks website here:

Here are a list of features:

  • High Precision GNSS Mini-PCIe card
  • Concurrent reception of GPS, GLONASS, Galileo and BeiDou
  • Centimeter-level (<2cm) Accuracy GNSS positioning
  • Integrated Multi-Band Real Time Kinematics (RTK)
  • High update rate for highly dynamic applications
  • Allows for “Base” and “Rover” Operation
  • Two UART headers for external correction messages
  • Timepulse (PPS) output header
  • Uses Standard NMEA, UBX and RTCM Message Format
  • USB to Serial Interface
  • Status LEDs
  • Rechargeable Lithium battery for faster cold start acquisition
  • RTCM 3.x, SSR, SBAS Corrections
  • <1.0m SBAS, <0.2m SSR, <0.03m RTCM 3.x
  • Supports L1 and L2/L5 Bands
  • -40°C to +85°C Operating Temperature
  • Made in USA

Differential GNSS devices such as the GW16143 are starting to replace survey-grade equipment. Other radio cards such as the Gateworks GW16130 Iridium Satellite Modem or GW16132 CAT-M1 modem can provide communication links for the augmentation data. The GW16143 enables precision navigation and automation of moving machinery in industrial applications such as agriculture, mining, and field mapping.

u-blox ZED-F9P Information

Hardware Headers & Pinouts

J1 Antenna

Standard MMCX Connector (Molex 73415-2061)

Note an active antenna is required by the ZED-F9P

Recommended Antenna:

  • u-blox ANN-MB-00 Multi-band active GNSS antenna w/5m cable and SMA Male connector Link
  • Available at Digikey:Link
  • Gateworks mating cable (GW10074 MMCX to SMA Female): Link

J5 & J3 UART Headers

4-pin Right Angle 1.25mm header (Molex 0781710004)

Note, J3 uses UART2 and J5 uses UART1 from the u-blox ZED-F9P

PinSignal
1 3.3VDC +
2 UART_TX
3 UART_RX
4 GND

J2 Timepulse Header

4-pin Right Angle 1.25mm header (Molex 0781710004)

PinSignal
1 3.3VDC +
2 Timepulse
3 Interrupt
4 GND

LEDs

ReferenceDescription
D1 3.3VDC Power - Green
D2 Timepulse - Yellow
D3 RTK - Yellow [1]
D4 Geofence - Yellow [1]

Software

The goal of this section is to provide a surface level understanding of the software components related beginning development on the GW16143. The primary component on the GW16143 is the U-Blox ZED-F9P high precision gps module, and is overall comparable to the C099-F9P application board in a mini-PCIe form factor. Notable differences between the C099-F9P and the GW16143 would be the absence of the ODIN-W2 (networking) module and the the addition of an antenna supervisor circuit.

Quick Start

The ZED-F9P modem will enumerate as a USB CDC ACM device: Communication Device CDC (ACM): Communication Device Class (Abstract Control Model)

Viewing standard (<15m accuracy) GNSS data using the GW16143 is simple on a Gateworks board.

root@focal-venice:~# ls -l /dev/ttyACM*
crw-rw---- 1 root dialout 166, 0 Oct  8 21:34 /dev/ttyACM0
root@focal-venice:~# cat /dev/ttyACM0
$GNRMC,214005.00,A,3515.48752,N,12040.13290,W,0.004,,081021,,,A,V*0A
$GNVTG,,T,,M,0.004,N,0.007,K,A*3E
$GNGGA,214005.00,3515.48752,N,12040.13290,W,1,12,0.55,32.0,M,-32.4,M,,*48
$GNGSA,A,3,10,21,22,31,32,01,03,04,26,,,,1.07,0.55,0.91,1*0C
$GNGSA,A,3,79,78,80,70,69,,,,,,,,1.07,0.55,0.91,2*0D
$GNGSA,A,3,01,04,36,11,09,31,05,,,,,,1.07,0.55,0.91,3*03
$GNGSA,A,3,20,32,29,37,35,19,,,,,,,1.07,0.55,0.91,4*08
$GPGSV,3,1,12,01,55,284,42,03,32,311,36,04,17,255,31,08,00,216,,1*67
$GPGSV,3,2,12,10,13,112,42,17,03,314,,21,57,242,47,22,54,320,45,1*65
  • Note if the device is also outputting binary data, directly reading the device as serial data can have unexpected behavior

You can also use gpsd to interact with the modem:

  • see wiki/gps#gpsd

See the following sections for information on setting up differential GPS to achieve fix data with <2cm levels of accuracy.

Host Development

The development tools released by U-Blox are made for the Windows OS, but various Linux based OS alternatives also exist. Initial bring up and testing was done on Gateworks Newport and Venice boards running our Ubuntu Focal BSP. Information on the Windows utilities are included as a reference.

Windows

The U-Blox software support for the C099-F9P (and the contained ZED-F9P) comes mainly in the form of the u-connectxpress and u-center software. The u-connectxpress software is responsible for the ODIN-W2, and is therefore not required for development with the GW16143. Instead the Gateworks baseboard itself takes the role of the network and communication channel to the ZED-F9P.

The u-center evaluation software needs to be installed on a Windows machine, but it has the capability to do everything required for configuration and testing on the ZED-F9P. This includes configuration of control registers, RTK base station/rover set up, and viewing GNSS data.

For more information on u-center usage see the relevant user guide.

Ubuntu

While it is possible to use the companion U-Blox u-center GNSS evaluation software to interact in a windows virtualization environment, there are open source or otherwise widely available software solutions that can natively run in a headless Ubuntu environment. Specifically this allows for full control over the ZED-F9P on the GW16143 when connected to a Gateworks board.

Therefore all of the following examples can be done on a running target board, or otherwise on a development machine with the GW16143 in a USB carrier. Code can then be cross compiled and delivered to units via whatever preferred method.

All of the following examples require GPSD version 3.21 or greater. The release source tarball for which can be found here. The Gateworks Ubuntu Focal 20.04.1 image at this time contains version 3.20 and therefore needs to be replaced, otherwise later operations involving ubxtool will fail in unexpected ways.

# Remove current gpsd
systemctl stop gpsd.socket
systemctl stop gpsd
systemctl disable gpsd.socket
systemctl disable gpsd
apt purge gpsd

# Install gpsd-3.21 from gateworks PPA (tested on Focal)
sudo add-apt-repository ppa:gateworks-software/packages
sudo apt-get update
sudo apt-get install gpsd gpsd-clients
systemctl stop gpsd.socket
systemctl stop gpsd
gpsd /dev/ttyACM0 # May need to kill this process later for RTCM set up

## OR ##

# Build gpsd from release source
apt install gcc scons python-gi python-gi-cairo g++
apt install libncurses5-dev libtinfo-dev pps-tools
apt install python3-distutils
wget http://download.savannah.gnu.org/releases/gpsd/gpsd-3.21.tar.xz
tar xvf gpsd-3.21.tar.xz
cd gpsd-3.21
ln -s /usr/bin/python3 /usr/bin/python
scons && scons check && scons udev-install

Differential GPS set up using NTRIP

Networked Transport of RTCM via Internet Protocol, or NTRIP, is the protocol that allows us to transmit RTK data between the differential gps basestation which has a fixed known position to any number of GPS clients that can use the RTK correction data. The NTRIP standard is designed and published by RTCM. You can read more about the NTRIP protocol here.

Acquiring RTK correction data for high precision GPS with the GW16143 can be done either by pointing to a preexisting source such as ones posted to rtk2go, or setting up a source, server, and caster yourself. Keep in mind that RTK correction data effectiveness is diminished over larger distances. For more specifics, see this great publication of RTK experimental findings by Yanming Feng and Jinling Wang.

There are a number of open source NTRIP utilities to use for setting up a differential GPS system. Some options and the required configuration steps of the GW16143 are described in the following sections.

Source

The first step in the differential GPS system is the server outputting RTK data. In order to output meaningful RTK data, the source (a.k.a. basestation) needs to either be fed a well known coordinate, or in the case of the ZED-F9P told to execute a survey-in process before outputting the RTCM3 messages required by our GW16143 NTRIP client.

ubxtool -p MON-VER | grep PROT # find protocol version
export UBXOPTS="-P 27.11"
ubxtool -p RESET # factory reset
ubxtool -e BINARY # enable binary messages
ubxtool -d NMEA # disable NMEA messages
ubxtool -p NAV-SVIN # see current survey in status
ubxtool -e SURVEYIN3 # start survey, defaults to 5 minute survey, 50m or better accuracy
ubxtool -e RTCM3 # start outputting RTCM messages

These RTCM3 messages contain the RTK data required for offset calculations client side, and once the device has been configured to output them no additional register modifications are necessary.

Server/Caster

RTKlib has all the components necessary for creating a custom NTRIP server and caster (see the custom solutions for more info). However if you are looking for a preexisting solution you can use the rtkbase and ntripcaster. Both are open source, ZED-F9P supported, and use RTKlib as examples for further development.

# rtkbase
wget https://raw.githubusercontent.com/Stefal/rtkbase/2.1/tools/install.sh -O install.sh
chmod +x install.sh
./install.sh --all

# ntripcaster
git clone https://github.com/baidu/ntripcaster
cd ntripcaster
./configure
make
make install # installs binary to /usr/local/ntripcaster/bin/ntripcaster

See the github links above for configuration steps as they will be specific to your network and preferences. Once you've set up your caster, be sure to modify your caster table appropriately to reflect your settings. See the NTRIP documentation Chapter 6 "Source Table" for a full table of the composing elements.

Client

The firmware that is loaded by default on the GW16143 will allow for an instance of gpsd to feed it RTK data and improve it's fix accuracy. However if you've fiddled with the configuration, or otherwise would like to make sure you're working with defaulted firmware, you can reset the device's configuration registers with ubxtool. Once again keep in mind you may need to run the polling operations of ubxtool more than once depending on asynchronous factors.

# Set protocol and verbosity levels
export UBXOPTS="-P 27.11 -v 2"

# test ubxtool communication with ZED-F9P
stty -F /dev/ttyACM0 raw
ubxtool

# Execute factory reset of configuration registers
ubxtool -p RESET

At this point make sure any default instances of gpsd are closed, then rerun with a valid NTRIP URI as an argument:

# Running gpsd towards ntrip URI
gpsd -G ntrip://rover:address@rtk2go.com:2101/MSJO1 -D 4 -N -n -s 460800 /dev/ttyACM0

At this point the fix provided by the GW16143/ZED-F9P is a result of RTK corrections.

If you're client device is on a high speed object, take a look at gpsd's ubxtool example page and read the section on dynamic platform model. It covers necessary changes required to prevent automatic fix smoothing that is destructive at high speeds.

Custom Solutions

Implementing your own software solution will most likely involve the use of rtklib. Taken directly from their overview:

RTKLIB is an open source program package for standard and precise positioning with GNSS (global navigation satellite system). RTKLIB consists of a portable program library and several APs (application programs) utilizing the library. The features of RTKLIB are:

  1. It supports standard and precise positioning algorithms with:

GPS, GLONASS, Galileo, QZSS, BeiDou and SBAS

  1. It supports various positioning modes with GNSS for both real-time and post-processing:

Single, DGPS/DGNSS, Kinematic, Static, Moving-Baseline, Fixed, PPP-Kinematic, PPP-Staticand PPP-Fixed

  1. It supports many standard formats and protocols for GNSS:

RINEX 2.10, 2.11, 2.12 OBS/NAV/GNAV/HNAV/LNAV/QNAV, RINEX 3.00, 3.01, 3.02 OBS/NAV, RINEX 3.02 CLK, RTCM ver.2.3, RTCM ver.3.1 (with amendment 1-5), ver.3.2, BINEX, NTRIP 1.0, RTCA/DO-229C, NMEA 0183, SP3-c, ANTEX 1.4, IONEX 1.0, NGS PCV and EMS 2.0

  1. It supports several GNSS receivers' proprietary messages:

NovAtel: OEM4/V/6, OEM3, OEMStar, Superstar II, Hemisphere: Eclipse, Crescent, u-blox: LEA-4T/5T/6T, SkyTraq: S1315F, JAVAD: GRIL/GREIS, Furuno: GW-10 II/III and NVS NV08C BINR (refer the Manual for details)

  1. It supports external communication via:

Serial, TCP/IP, NTRIP, local log file (record and playback) and FTP/HTTP (automatic download)

  1. It provides many library functions and APIs for GNSS data processing: Satellite and navigation system functions, matrix and vector functions, time and string functions, coordinates transformation, input and output functions, debug trace functions, platform dependent functions, positioning models, atmosphere models, antenna models, earth tides models, geoid models, datum transformation, RINEX functions, ephemeris and clock functions, precise ephemeris and clock functions, receiver raw data functions, RTCM functions, solution functions, Google Earth KML converter, SBAS functions, options functions, stream data input and output functions, integer ambiguity resolution, standard positioning, precise positioning, post-processing positioning, stream server functions, RTK server functions, downloader functions
  1. It includes the following GUI and CUI APs:

Function GUI AP CUI AP
AP Launcher RTKLAUNCH -
Real-Time Positioning RTKNAVI RTKRCV
Communication Server STRSVR STR2STR
Post-Processing Analysis RTKPOST RNX2RTKP
RINEX Converter RTKCONV CONVBIN
Plot Solutions and Observation Data RTKPLOT -
Downloader of GNSS Data RTKGET -
NTRIP Browser SRCTBLBROWS -
  1. All of the executable binary APs for Windows are included in the package as well as whole source programs of the library and the APs.

References

GPSD Home Page

Ubxtool Examples

NTRIP Documentation

ZED-F9P Interface Manual (UBX commands for ubxtool configuration)

C099-F9P User Guide

rtklib

Attachments (3)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.