Blog

  • Vodafone MachineLink 3G Plus Advances M2M Adoption

    NetComm Wireless Limited and Vodafone have added the Vodafone MachineLink 3G Plus to the Integrated M2M Terminals range, offering an alternative for unconnected machines that need a larger selection of interface options. Developed by NetComm Wireless to facilitate the uptake of Machine-to-Machine (M2M) across a multitude of industries globally, the Vodafone MachineLink 3G Plus enables M2M connectivity in areas such as healthcare, agriculture, vending, point of payment and energy.

    The Vodafone MachineLink 3G Plus is a 3G penta-band modem and router with built-in GPS. It is compatible with Vodafone or Vodafone M2M partner networks worldwide, and the Vodafone M2M Global Platform. The device supports multiple communication protocols and interface options with features including Ethernet, Serial (RS232/422/485), I/O and USB 2.0 ports. Designed for flexible customization, the Vodafone MachineLink 3G Plus features an embedded Software Development Kit (SDK) and open source Linux OS to support unique business functions.

    Vodafone’s second annual M2M Adoption Barometer found that M2M adoption has grown more than 80%, with more than one-fifth of companies actively using the technology. The Vodafone MachineLink 3G Plus is expected to advance this growth by allowing businesses to upgrade from legacy serial connectivity to IP connectivity with access to a broader range of connection choices.

    “The Vodafone MachineLink 3G Plus is the second bespoke product developed for Vodafone which gives businesses the ability to select the best solution for their individual applications. It presents a tremendous opportunity for businesses that need extra options to connect and manage valuable assets,” saidDavid Stewart, CEO and managing director, NetComm Wireless.

  • Automated Pile Driver from Orteco Uses Altus APS-U for Machine Control

    Automated Pile Driver from Orteco Uses Altus APS-U for Machine Control

    Orteco is an Italian manufacturer of pile-driving equipment.
    Orteco is an Italian manufacturer of pile-driving equipment.

    Orteco, a specialized manufacturer of pile driving machines based in northern Italy, has introduced a series of robotic pile drivers using APS-U GNSS RTK receivers from Altus Positioning Systems. The products are being supplied to Orteco by Altus’ parent company, Septentrio NV.

    The driverless tracked crawler maneuvers automatically under control of the APS-U, which provides centimeter-level position coordinates and heading information within 0.3 degrees, following a project map loaded into the machine’s computer. It automatically drives itself to each location, positions the mast and drives the post in a perfectly vertical position, stopping the installation at exactly the desired height, then moves automatically to the next spot.

    The Altus APS-U-HDG is a high-precision 272-channel GPS/GLONASS/SBAS receiver with dual antennas designed to provide highly accurate heading and position for machine control applications. Cased in a rugged MIL-STD-810C aluminum housing, the instrument is built to the most rigorous standards for waterproofing, humidity, dust, shock, vibration and extreme temperatures.

    The Altus APS-U-HDG.
    The Altus APS-U-HDG.

    Orteco is building the GNSS-controlled pile driver in various configurations for applications such as photovoltaic farms, fences, roadside barriers and agriculture. It makes pile driving jobs faster, safer and more accurate with fewer workers, increasing productivity and reducing costs, Altus said.

    “The Orteco machines provide a perfect demonstration of the ruggedness, power and performance of the APS-U as a highly accurate heading and positioning sensor in one of the most demanding environments imaginable,” said Altus CEO Neil Vancans. “In extensive tests conducted by Orteco, the APS-U receivers proved themselves up to the task, performing reliably under the constant heavy pounding and vibration of the pile driver.”

    Based in Bologna, Orteco is a specialized manufacturer focused on pile driving with a 40-year history. In 2011, the company reached a milestone of 1,000 pile drivers produced and distributed all over the world. The company’s GNSS-controlled agricultural pile driver, designed to install posts in large vineyards, was recognized as a winner of the Innovation Challenge Enovitis in campo 2014 by Unione Italiana Vini and Veronafiere.

  • SimActive Launches Version 6.0 with Photogrammetric Workflow

    SimActiveSimActive Inc., a developer of photogrammetry software, has announced Correlator3D version 6.0, which features a new interface for streamlined image processing for any sensor type. Other new features include support of multi-camera setups and large blocks of satellite images.

    The completely redesigned interface allows powerful actions to be easily executed, SimActive said. Correlator3D 6.0 adds a project creation wizard to easily import any type of data. With a created project, processing steps, automated or not, remain the same irrespective of sensor. Moreover, all data and results can be displayed and edited simultaneously at all times by the user.

    “From the neophyte to the experienced user, the elegance of design empowers all, while further increasing functionality and possibilities,” said Louis Simard, CTO of SimActive. “Correlator3D continues to define the industry standard for UAV, large format aerial, and satellite imagery; it is the one-stop solution for all users.”

    For a live demonstration at the India Geospatial Forum 2015 (February 10-12, Hyderabad, India), email [email protected].

  • Sokkia Introduces ‘Reimagined’ Field Receiver, the GCX2

    The GCX2 receiver uses 226 channels.
    The GCX2 receiver uses 226 channels.

    Sokkia has introduced a GNSS integrated receiver designed for lightweight and convenient field operation — the GCX2.

    “Nicknamed ‘the bullet’, the GCX2 exemplifies a completely reimagined approach to receiver design that offers an ultra-lightweight and ergonomic solution at a low cost,” said Eduardo Falcon, executive vice president and general manager of the GeoPositioning Solutions Group.

    The multi-constellation and dual-frequency receiver is designed to offer affordable high-quality results for traditional applications in the surveying and construction fields — as well as unconventional uses such as in landscape architecture, GIS, BIM and forensic mapping. The receiver connects via Bluetooth to the Sokkia S-10 or GHX2 field controller, enabling ease-of-operation within the MAGNET suite of software. The GXC2 uses 226 channels, each one optimized to constantly track any currently available satellite signals.

    “This is the smallest and lightest integrated receiver Sokkia has ever offered,” said Falcon. “The innovative POST (Precision Orbital Satellite Technology) antenna element allows for a form that is both ergonomic and extremely lightweight, which fully differentiates it from existing receivers in the market. The unique ‘bullet’ shape appears as a small extension of the range pole — almost as if it’s not even there.”

    GCX2_studio_Sokkia-WThe receiver features radio-free RTK operation via interference-free data communication technology, which eliminates licensing issues. When used as a base station, it can support up to three concurrent GCX2 rovers at a range of up to 300 meters. Each receiver can be used as a base or as a rover.

    For network operation, the GCX2 may be paired with a cellular-enabled data-controller to provide RTK network corrections and connectivity with MAGNET Enterprise.

    “The GCX2 delivers a high level of performance and efficient workflow, and it’s offered with a substantial pricing advantage over competitive systems,” said Falcon.

    Additional features include a rechargeable battery and Sokkia receiver utility (SRU) software compatibility.

  • Air Force Orders Two More GPS III Satellites

    The United States Air Force plans to order two more GPS III satellites from contractor Lockheed Martin, according to SpaceNews. Lockheed Martin is under contract to build eight GPS III satellites, with the first planned to be launched in 2016. The contract includes options for up to four more satellites.

    However, the Air Force plans to open up construction of subsequent GPS satellites for competitive bidding with GPS III space vehicle 11, reports Aviation Week.

    The satellites are part of the Air Force’s $167.3 billion budget request for fiscal 2016, up from $152.8 billion provided by Congress for fiscal 2015.

    The Air Force also intends to buy only one GPS satellite — from Lockheed Martin or a different contractor — in 2017 rather than the three included in the current budget blueprint, according to the SpaceNews.

  • ION Announces 2015 Award Winners, Fellows

    ION Announces 2015 Award Winners, Fellows

    The Institute of Navigation (ION) presented its Annual Awards during the ION International Technical Meeting in Dana Point, Calif., Jan. 26-28. The annual awards recognize individuals making significant contributions or demonstrating outstanding performance relating to the art and science of navigation. ION also announced its elected Fellow members.

    Award Winners

    • Mathieu Joerger received the Early Achievement Award for outstanding contributions to the integrity of multi-constellation and multi-sensor navigation systems. The award is presented in recognition of outstanding contributions made early in one’s career.
    • Captain Samantha Ekwall received the Superior Achievement Award for her heroic actions as the lead navigator for a five-ship formation during the refueling of the battle damaged CV-22 Ospreys during a U.S. embassy evacuation attempt in South Sudan. The Superior Achievement Award is presented to an individual demonstrating outstanding accomplishments as a practicing navigator.
    • Hamid Mokhtarzadeh and Demoz Gebre-Egziabher received the Dr. Samuel M. Burka Award for their paper “Cooperative Inertial Navigation” published in the Summer 2014 issue of NAVIGATION: Journal of the Institute of Navigation, Vol. 61, No. 2,pp.77-94. The award recognizes outstanding achievement in the preparation of a paper contributing to the advancement of the art and science of positioning, navigation and timing.
    • Patricia Doherty received the Captain P. V. H. Weems Award for her contributions to the management and encouragement of advanced navigation research and for her service to ION. The award is presented to individuals for continuing contributions to the art and science of navigation.
    • Bruce Haines received the Tycho Brahe Award for notable achievements in astrodynamics-navigation, precise orbit determination and satellite applications to geophysics and oceanography. The Tycho Brahe Award is presented to recognize outstanding contributions to the science of space navigation, guidance and control.
    • Neeraj Pujara received the Norman P. Hays Award for his inspired leadership, outstanding encouragement, inspiration and dedicated support contributing to the advancement of navigation. The award is given in recognition of outstanding encouragement, inspiration and support contributing to the advancement of navigation.
    • Todd Humphreys received the Thomas L. Thurlow Award for contributions that enhance radionavigation security and robustness in the face of intentional spoofing and natural interference. The award recognizes outstanding contributions to the science of navigation. Humphreys has written several articles for GPS World, the latest being the February cover story, “Accuracy in the Palm of Your Hand.”
    • Patricia Doherty received the Distinguished Service Award, presented for extraordinary service to ION.
    ION's new Fellows: (from left) Attila Komjathy, Yu (Jade) Morton, and Frank van Digglen.
    ION’s new Fellows: (from left) Attila Komjathy, Yu (Jade) Morton, and Frank van Digglen.

    Fellows

    ION also announced recipients of 2015 Fellow memberships. Election to Fellow membership recognizes the distinguished contributions of ION members to the advancement of the technology, management, practice and teaching the arts and science of navigation; and/or lifetime contributions to ION.

    • Attila Komjathy has been elected for contributions to remote sensing of Earth’s ionosphere using GNSS signals.
    • Yu (Jade) Morton has been elected for contributions to GNSS software receivers and the development of a worldwide network of space weather monitoring stations.
    • Frank van Digglen has been elected for contributions to satellite-based navigation for consumer applications, especially mobile handheld devices. van Diggelen joined the GPS World Advisory Board in 2014.

     

  • Geospatial Innovation Spotlighted at Esri D.C. Conference

    Editor’s Note: GeoIntelligence Insider Editor Art Kalinksi will be reporting from the conference. Follow GSS on Twitter to learn the latest.


    Technology and government leaders will gather for the Esri Federal GIS Conference in Washington, D.C., Feb. 9–10, to discuss the latest geospatial technology and how federal government agencies use it to build a more resilient nation. Keynote speakers include Robert Cardillo, director of the National Geospatial-Intelligence Agency (NGA), and former Maryland governor Martin O’Malley.

    Cardillo, who Esri says has been a visionary in geospatial intelligence, will discuss his plans to create a dynamic, persistent, proactive intelligence service that continues to expand its mission to support global aid, humanitarian relief, and disaster response. “Recent two-term governor of Maryland Martin O’Malley is one of the most technologically savvy elected officials in the United States,” Esri said in a press release. “He will share how he used geospatial technology to radically improve state government including education, environment, safety, and the economy.”

    During the plenary sessions, immersion summits, and professional development workshops, attendees will learn about advances in GIS technology in areas such as real-time analysis, open data, and 3D mapping. Federal government professions from all disciplines — from the U.S. Department of Agriculture (USDA) to the U.S. Marine Corps — will share ideas, knowledge, and success stories throughout the event.

    Registration is now open.

  • President’s 2016 Budget Proposes $1.2 Billion for USGS

    The U.S. president’s fiscal year 2016 budget request for the U.S. Geological Survey (USGS) is $1.2 billion, an increase of nearly $150 million above the FY 2015 enacted level. According to a statement from the USGS, the FY16 budget “reflects the vital role the USGS plays in advancing the president’s ongoing commitment to scientific discovery and innovation to support a robust economy, sustainable economic growth, natural resource management, and science-based decision-making for critical societal needs.”

    The budget request includes increases that ensure the USGS is at the leading edge of earth sciences research,” the statement continued. “It includes robust funding for science to inform land and resource management decisions, advance a landscape-level understanding of ecosystems, and develop new information and strategies to support communities in responding to climate change, historic drought, water quality issues, and natural hazards. The budget also funds science to support the nation’s energy strategy, to help identify critical mineral resources, and to address the impacts of energy and mineral development on the environment.”

    “The USGS has a strong 136-year legacy of providing reliable science to decision-makers,” said Suzette Kimball, acting USGS director. “This budget request recognizes our unique capabilities with multi-disciplinary earth science research and will allow the USGS to meet societal needs for our nation now and in the future.”

    Below are breakdowns of how the budget will address particular areas, according to the USGS.


    Meeting Water Challenges in the 21st Century

    The FY16 budget provides an increase of $14.5 million above the FY 2015 enacted level for science to support sustainable water management.  Meeting the nation’s water resource needs poses increasing challenges for resource managers, who must contend with changes in the frequency and magnitude of floods and droughts. As competition for water resources grows for activities such as farming, energy production, and community water supplies, so does the need for information and tools to aid decision-makers. The budget provides increased funding across several USGS mission areas to support resource managers in understanding and managing competing demands related to water availability and quality and to enable adaptive management of watersheds to support the resilience of the communities and ecosystems that depend on them. This includes a $3.2 million increase for science to understand and respond to drought, a $4 million increase for water use information and research, a $2.5 million increase to study ecological water flows, a $1.3 million increase for stream flow information, and a $1.0 million increase to advance the National Groundwater Monitoring Network.

    Powering Our Future and Supporting Sustainable Energy and Mineral Development 

    The 2016 USGS budget provides $9.6 million in program increases across the energy, minerals and environmental health portfolio for science to support the sustainable development of unconventional oil and gas resources, renewable energy sources such as geothermal, wind, and solar, critical minerals such as rare earth elements, and to address the environmental impacts of uranium mining.

    Specifically, the budget includes a program increase of $1 million for mineral resources science to continue life-cycle analysis for critical minerals such as rare earth elements and to develop new science and tools to reduce the impacts of minerals extraction, production, and recycling on the global environment and human health. A life-cycle analysis will trace the flow of critical minerals from generation and occurrence through the consequences of human activity to ultimate disposition and disposal. The nation faces key economic decisions within each stage of the resource life cycle.  Scientific understanding is an essential input to these decisions. The program change will support new workforce capability to address the main thrusts of the president’s four working groups in the Office of Science and Technology Policy that are currently focused on critical and strategic materials essential to national security, economic vitality, and environmental protection.

    Responding to Natural Hazards

    The budget provides an increase of more than $6.6 million above the FY 2015 enacted level for natural hazard science.  This includes an increase of $4.9 million to expand the Global Seismic Network used for worldwide earthquake monitoring, tsunami warning, and nuclear treaty verification monitoring and research in partnership with the Department of Energy and the Department of Defense. It also includes  a $1.7 million increase to support space weather (solar flare) geomagnetic monitoring. The increase will also support the installation and operation of rapid-deployable streamgages and expand the library of flood-inundation maps to help manage flood response activities.The proposed increase will also support landslide, wildfire, and sinkhole response capabilities as well as provide disaster scenario planning products for emergency managers. Included in the request is funding to build on investments to continue development of an earthquake early warning system, with the goal of implementing a limited public warning system for the U.S. west coast by 2018, as well as continued investments in volcano monitoring networks and science.

    Building a Landscape-Level Understanding of Our Resources

    The budget includes $15.6 million to expand, enhance, and initiate ecosystem science activities to increase the understanding of the nation’s landscapes and how they work. This includes budget increases of $6.7 million in support of critical landscapes. Specifically it provides a $4.2 million increase for the Arctic, a $1 million increase to study sagebrush landscapes that provide habitat for survival of greater sage-grouse, and a $1.5 million increase that supports science for Puget Sound, Columbia River, and the upper Mississippi River.

    USGS research will continue to support restoration of other priority ecosystems, such as Chesapeake Bay, Everglades, Great Lakes, California Bay Delta, and the Gulf Coast. The budget request also provides an increase of $2.2 million for research on invasive plants and animals that cause significant economic losses in the U.S. and transmit diseases to wildlife and people, and $1.6 million to study the decline of insects, birds, and mammals that pollinate agricultural and other plants. Finally, the budget increases funding by $5.1 million to support coastal resilience to hazards and adaptation to long-term change from sea-level rise and coastal erosion.

    Foundations for Land Management

    The president’s budget request includes an increase of $37.8 million to provide data and tools to help land and resource managers make informed decisions across the landscape and provide data and information to the public for use in a wide variety of applications. The budgets of USGS and NASA provide complementary funding to sustain the Landsat data stream, which is critical to understanding global landscapes. An increase of $24.3 million in the USGS budget supports the ground system portion of the Sustained Land Imaging Program, including funding for ground systems development for a Thermal Instrument Free Flyer, Landsat 9 (a rebuild of Landsat 8), and to receive data from internal partners. The increase also will enhance the accessibility and usability of data.  Specifically, the budget includes a $4 million increase for Landsat science products for climate and resource assessments.

    The budget provides increases for other foundational data and tools needed to support landscape-level understanding.  For example, an increase of $3.7 million will expand three-dimensional elevation data collection using ifsar (interferometric synthetic aperture radar) for Alaska and lidar (light detection and ranging) elsewhere in the U.S. in response to growing needs for high-quality, high-resolution elevation data to improve aviation safety, to understand and mitigate the effects of coastal erosion, storms, and other hazards, and to support many other critical activities. A $1.8 million increase will enhance understanding of the benefits of the nation’s ecosystem services, and a $1.1 million increase for the Big Earth Data Initiative will make high-value data sets easier to discover, access and use. The accessibility and usability of these data are critical for land management, hazard mitigation, and building a landscape-level understanding of our resources.

    Supporting Community Resilience in the Face of a Changing Climate 

    The USGS plays an important role in conducting research and developing information and tools to support communities in understanding, preparing for, and responding to the impacts of global change. The budget includes an increase of $32 million above the FY 2015 enacted level for science to support climate resilience and adaptation. Climate change requires the nation to prepare for more intense drought, heatwaves, wildfire, flooding, and sea level rise. These challenges are already impacting infrastructure, food and water supplies, and physical safety in communities across the nation.

    Understanding potential impacts to communities, ecosystems, water, plant and animal species, and other resources is crucial to federal, state, tribal, local, and international partners as they develop adaptive and resilient strategies in response to climate change. The budget includes a $6.8 million increase in science for adaptation and resilience planning, an increase of $2.3 million for the USGS to provide interagency coordination of regional climate science activities across the nation, an increase of $8.7 million to support biological carbon sequestration, and an increase of $11 million for the USGS to support the community resilience toolkit, which is a web-based clearinghouse of data, tools, shared applications, and best practices for resource managers, decision-makers, and the public.

  • Leap Second Implementation Confuses Some Receivers

    The United States Civil GPS Service Interface Committee (CGSIC) has issued a notice about a problem some receivers are having implementing the correct time. The U.S. Coast Guard Navigation Center has received reports of synchronization issues since the implementation of a leap second on Jan. 21. Users experiencing this problem should contact the receiver manufacturer for a firmware or software update.

    Below is the text of the CGSIC notice:


    All CGSIC: 2015 GPS Future Leap Second Implementation

    The GPS 50 bit-per-second navigation message transmitted by each GPS satellite (specifically Page 18, subframe 4) includes the parameters needed to relate GPS time to UTC (Coordinated Universal Time).  That relationship is maintained through leap second implementation transitions by IS-GPS-200 compliant user equipment.  For leap second transition, user equipment must utilize the notice regarding a scheduled future delta time due to leap seconds (ÄtLSF), together with the week number (WNLSF) and the day number (DN), at the end of which the leap second becomes effective.

    On or about Jan. 21, 2015, those GPS navigation messages began to include future leap second data which indicates an increase in the leap second to become effective at the end of June 2015.  IS-GPS-200 revision H, dated 24 Sep 2013 paragraph 20.3.3.5.2.4 Coordinated Universal Time (UTC), documents the appropriate algorithm details to ensure correct utilization of the parameters above (including all potential truncated week number transitions and variations in time of processing relative to satellite upload timing near the future leap second effectivity).

    The data upload for the June 30 leap second, initiated with SVN48/PRN07 at 18:33:56z on Jan. 21, was correctly executed. However, there are several receivers brands/models that seem to be mishandling this information and applying the leap second now. This is creating a negative one-second offset in faulty receivers. The U.S. Coast Guard Navigation Center has reports of these receivers causing synchronization issues with radios, computer systems, and data logging equipment.

    Users experiencing issues with GPS receivers that began on Jan. 21 should contact the receiver manufacturer to determine if the latest firmware or software patch can correct the issue.

    V/R Rick Hamilton
    CGSIC Executive Secretariat GPS Information
    Analysis Team Lead USCG Navigation Center
    703-313-5930

  • Accuracy in the Palm of Your Hand

    Accuracy in the Palm of Your Hand

    Pesyna_opener

    Centimeter Positioning with a Smartphone-Quality GNSS Antenna

    By Kenneth M. Pesyna, Jr., Robert W. Heath, Jr. and Todd E. Humphreys, the University of Texas at Austin

    The smartphone antenna’s poor multipath suppression and irregular gain pattern result in large time-correlated phase errors that significantly increase the time to integer ambiguity resolution as compared to even a low-quality stand-alone patch antenna. The time to integer resolution — and to a centimeter-accurate fix — is significantly reduced when more GNSS signals are tracked or when the smartphone experiences gentle wavelength-scale random motion.

    GNSS chipsets are now ubiquitous in smartphones and tablets. Yet the underlying positioning accuracy of these consumer-grade GNSS receivers has stagnated over the past decade. The latest clock, orbit, and atmospheric models have improved ranging accuracy to a meter or so, leaving receiver-dependent multipath and front-end-noise-induced variations as the dominant sources of error in current consumer devices. Under good multipath conditions, 2-to-3-meter-accurate positioning is typical; under adverse multipath, accuracy degrades to 10 meters or worse.

    Yet outside the mainstream of consumer GNSS receivers, centimeter — even millimeter — accurate GNSS receivers can be found. These high-precision receivers are used routinely in geodesy, agriculture, and surveying. Their exquisite accuracy results from replacing standard code-phase positioning techniques with carrier phase differential GNSS (CDGNSS) techniques. Currently, the primary impediment to performing CDGNSS positioning on smartphones lies not in the commodity GNSS chipset, which actually outperforms survey-grade chipsets in some respects, but in the antenna, whose chief failing is its poor multipath suppression. Multipath, caused by direct signals reflecting off the ground and nearby objects, induces centimeter-level phase measurement errors, which, for static receivers, have decorrelation times of hundreds of seconds. The large size and strong time correlation of these errors significantly increases the initialization period — the so-called time-to-ambiguity-resolution (TAR) — of GNSS receivers employing CDGNSS to obtain centimeter-level positioning accuracy.

    Prior work on centimeter-accurate positioning with low-cost mobile devices has focused on external devices, or “pucks,” which contain a GNSS antenna and chipset. These devices interface with the smartphone via Bluetooth or a wired connection. Such solutions, which enjoy the better sensitivity and multipath suppression offered by their comparatively large, high-quality GNSS antennas, do not provide insight into the feasibility of CDGNSS on a stand-alone smartphone platform.

    This article demonstrates that centimeter-accurate CDGNSS positioning is indeed possible based on data sampled from a smartphone-quality GNSS antenna. This result has far-reaching significance for precise mass-market positioning. We offer an empirical analysis of the average gain and carrier phase multipath error susceptibility of smartphone-grade GNSS antennas. We also demonstrate that, for low-quality GNSS antennas such as those in smartphones, wavelength-scale random antenna motion substantially improves the time to integer ambiguity resolution.

    This article focuses on single-frequency CDGNSS rather than multiple-frequency CDGNSS or other carrier-phase-based techniques, such as precise-point positioning (PPP), for three reasons. First, virtually all smartphones are equipped with single-frequency GNSS antennas tuned to the L1 band centered at 1575.42 MHz, and single-frequency CDGNSS will likely forever remain the cheapest option. Second, as compared to PPP, CDGNSS converges much faster to centimeter accuracy, which will be important for impatient smartphone users.

    Finally, as centimeter-accurate GNSS moves into the mass market, GNSS reference stations will proliferate so that the vast majority of users can expect to be within a few kilometers of one. In this so-called short baseline regime, the differential ionospheric delay between the reference and mobile receivers becomes insignificant, obviating differential delay estimation via multi-frequency measurements. Of course, the additional signal measurements produced by multiple-frequency receivers would lead to faster convergence times and improved robustness, but for many applications, single-frequency measurements will be adequate.

    Test Architecture

    We used the test architecture shown in Figure 1 to collect data from a smartphone-grade antenna and higher quality antennas, process these data through a software-defined GNSS receiver, and compute a CDGNSS solution on the basis of the carrier phase measurements output by the GNSS receiver.

    Figure 1. Test architecture designed for an in-situ study of a smartphone-grade GNSS antenna. The analog GNSS signal is tapped off after the phone’s internal bandpass filter and low-noise amplifier and is directed to a dedicated RF front-end for downconversion and digitization. Data are stored to file for subsequent post-processing by a software GNSS receiver and CDGNSS filter.
    Figure 1. Test architecture designed for an in-situ study of a smartphone-grade GNSS antenna. The analog GNSS signal is tapped off after the phone’s internal bandpass filter and low-noise amplifier and is directed to a dedicated RF front-end for downconversion and digitization. Data are stored to file for subsequent post-processing by a software GNSS receiver and CDGNSS filter.

    The architecture has been designed such that the antenna is left undisturbed within the phone; data are collected by tapping off the analog signal immediately after the phone’s internal bandpass filter and low-noise amplifier. This analog signal is directed to an external radio frequency (RF) front-end and GNSS receiver. Use of an external receiver permits well-defined GNSS signal processing unencumbered by the limitations of the phone’s internal chipset and clock.

    The clock attached to the external front-end was an oven-controlled crystal oscillator (OCXO), which has much greater stability than the low-cost oscillators used to drive GNSS signal sampling within smartphones. However, it was found that reliable cycle-slip-free GNSS carrier tracking only required a 40-ms coherent integration (pre-detection) interval, which is within the coherence time of a low-cost temperature-compensated crystal oscillator (TCXO) at the GPS L1 frequency.

    Although only a single model of smartphone was tested using this architecture — a popular mass-market phone — the results are assumed representative of all smartphones from the same manufacturer.

    Using this architecture, many hours of raw high-rate (6 MHz) digitized intermediate frequency samples were collected and stored to disk for post processing. Also stored to disk were high-rate data from a survey-grade antenna, which served as the reference antenna for CDGNSS processing. An in-house software-defined GNSS receiver, known as GRID, was used to generate, from these samples, high-quality carrier phase measurements. GRID is a flexible receiver that can be easily adapted to maintain carrier lock despite severe fading. Complex baseband accumulations output from GRID allowed detailed analysis of the signal and tracking loop behavior to ensure that no cycle slips occurred. The generated carrier phase measurements were subsequently passed to a CDGNSS filter, a model for which is described in the next section.

    CDGNSS Processing

    The CDGNSS filter described in this section ingests double-differenced carrier phase measurements output from GRID and processes them to produce (1) the centimeter-accurate trajectory estimate of the mobile antenna, (2) a time history of phase residuals, (3) carrier phase integer ambiguity estimates, (4) theoretical integer ambiguity resolution success bounds, and (5) empirical integer ambiguity resolution success rates. These outputs are used to analyze the performance of the smartphone-grade antenna and compare its performance to higher-quality antennas.

    CDGNSS Filter Model. The filter’s state has a real-valued component xk that models the mobile antenna’s relative center of motion, its instantaneous offset from this center of motion, and its velocity at each time epoch k:

    Eq_1. (1)

    The filter’s state also has an integer-valued component that models the CDGNSS phase ambiguities:

    Eq_2(2)

    where NSV is the total number of satellites tracked. Such integer ambiguities are inherent to carrier phase differential positioning techniques; their resolution has been the topic of much past research and is required to produce a CDGNSS positioning solution.

    Dynamics and Measurement Models. The real-valued state component xk is assumed to evolve as a mean-reverting second-order Gauss-Markov process. This process models the time-correlated and mean-reverting motion a smartphone experiences when held or moved gently in the extended hand of an otherwise stationary user. The integer-valued state component nk is modeled as constant, since the phase ambiguities remain fixed so long as the receiver retains phase lock on each signal.

    The filter ingests measurement vectors yk for k = 1, …, K, each populated with a single epoch of double-differenced carrier phase measurements Eq-5  for i = 1, 2, . . . , NSV–1. The filter’s measurement model relates yk to the real- and integer-valued state components through the following linearized GNSS carrier phase measurement model:

    Eq_3a (3)

    where rxk is a vector of double-differenced modeled ranges based on the filter’s real-valued state prior Eq-6, Hxk and Hn are the measurement sensitivity matrices for the real- and integer-valued state components, and vk is the double-differenced measurement noise vector, all at time k.

    Phase Residuals. After processing data through the CDGNSS filter, the filter outputs, in addition to a time history of centimeter-accurate position estimates, a time history of phase residuals Eq-7, which can be thought of as departures of each double-differenced phase measurement from phase alignment at the phase center of the antenna. These residuals can be modeled as

    Eq_4a  (4)
    where rxk is now based on the filter’s real-valued state estimate  Eq-8  at time k and Eq-9 represents the filter’s estimate of the integer ambiguities at time K.

    Phase residuals have been produced for batches of data collected from four different grades of antennas, as described next. These residuals will be used to analyze the suitability of each antenna for CDGNSS positioning.

    Antenna Performance Analysis

    This section describes four antennas from which data were captured and processed using the test architecture and CDGNSS filter described previously. It also quantifies the characteristics that make low-quality smartphone-grade antennas poorly suited to CDGNSS.

    Table 1 describes a range of antenna grades of decreasing quality, noting properties relevant to CDGNSS. The loss numbers in the far-right column represent the average loss in gain relative to a survey-grade antenna, where the average is taken over elevation angles above 15 degrees.

    Table 1. Antenna properties.
    Table 1. Antenna properties.

    Survey-grade antennas, whose properties are described in the first row of Table 1, have a uniform quasi-hemispherical gain pattern, right-hand circular polarization, a stable phase center, and a low axial ratio. These are all desirable properties for CDGNSS. Unfortunately, these properties inhere in the antennas’ large size; the laws of physics dictate that smaller antennas will typically be worse in each property.

    The last row of Table 1 lists the properties for a smartphone-grade antenna. As shown subsequently, this antenna loses between 5 and 15 dB in sensitivity as compared to the survey-grade antenna. Such a loss makes it difficult to retain lock on GNSS signals. In addition, this antenna’s linear polarization leads to extremely poor multipath suppression.

    Antenna Gain Analysis. Figure 2 quantifies one of the obvious drawbacks of a smartphone-grade antenna, namely, its low gain.

    Figure 2, Drop in carrier-to noise ratio, from 2 hours of data and 9 tracked satellites. Antennas remained stationary.
    Figure 2, Drop in carrier-to noise ratio, from 2 hours of data and 9 tracked satellites. Antennas remained stationary.

    The rightmost histogram, in green, shows that the decrease in carrier to noise ratio as compared to a survey-grade antenna is on average 11 dB, such that the smartphone-grade antenna only captures approximately 8 percent of the signal power as compared its survey-grade counterpart. For comparison, shown on the left, in blue, is a histogram of the decrease in carrier-to-noise ratio for the low-quality patch antenna. This antenna only suffers about a 0.6-dB drop in power on average relative to the survey-grade antenna. Each histogram was generated from 2 hours of data with nine tracked satellites ranging in elevation from 15 to 90 degrees. The antennas remained stationary. The variation in signal power around the means is due to the multipath-induced power variations in the signal as well as to the different gain patterns between each antenna and the survey-grade antenna.

    Phase Residual Analysis. Shown in Figures 3, 4, and 5 are 2,000-second segments of double-differenced phase residual time histories for data collected from a survey-grade, a low-quality patch, and a smartphone-grade antenna, respectively.

    Figure 3. Survey-grade antenna. Each trace represents a residual for a different satellite pair. Ensemble average standard deviation 3.4 millimeters.
    Figure 3. Survey-grade antenna. Each trace represents a residual for a different satellite pair. Ensemble average standard deviation 3.4 millimeters.
    Figure 4. Low-quality patch antenna. Ensemble average deviation 5.5 mm.
    Figure 4. Low-quality patch antenna. Ensemble average deviation 5.5 mm.
    Figure 5. Smartphone-grade antenna.Ensemble average deviation 11.4 mm.
    Figure 5. Smartphone-grade antenna.Ensemble average deviation 11.4 mm.

    To produce these residuals, the antenna position was locked to its estimated value within the CDGNSS filter. The residuals represent departures of the carrier phase measurements from perfect alignment at the average phase center of the antenna. Each different colored trace corresponds to a different satellite pair. While the data segments were not captured at the same time of day, they were captured at the same location, and thus the multipath environment was similar.

    The ensemble average residual standard deviations increase with decreasing antenna quality. The residuals for the survey-grade, low-quality patch, and smartphone-grade antennas have ensemble average standard deviations of 3.4, 5.5 and 11.4 millimeters, respectively. This increase is due to the lower gain and less effective multipath suppression of the lower quality antennas.

    Figure 5 shows the presence of outlier residuals in the data collected from the smartphone-grade antenna. These outliers, one of which persists for over 1,000 seconds, are likely caused by either large and irregular azimuth- and elevation-dependent antenna phase center variations or a combination of poor antenna gain in the direction of the non-reference satellite coupled with ample gain in the direction of a multipath signal such that the multipath signal is received with more power than the direct-path signal. Obvious outliers such as these can be automatically excluded by the CDGNSS filter via an innovations test. However, the standard deviation of the remaining residuals still remains large compared to that of the other antennas; the ensemble average standard deviation decreases from 11.4 to 8.6 millimeters upon exclusion of the two large outliers.

    For antennas with a large ensemble average standard deviation in their double-differenced phase errors, the time correlation in the phase errors becomes more important. This time correlation, which persists for 100–200 seconds, is a well-studied phenomenon caused by slowly varying carrier phase multipath. While correlation is present in the residuals of all antenna types, and manifests approximately the same decorrelation time, its effect is more of a problem for low-quality antennas because the phase errors are larger. Such correlation, coupled with a large deviation, ultimately leads to a longer time to ambiguity resolution, shown later.

    Given a smartphone antenna’s extremely poor gain and multipath suppression as compared to even a low-quality stand-alone patch antenna, one might question the wisdom of attempting a CDGNSS solution using such an antenna. However, the next section reveals that it is indeed possible to achieve a centimeter-accurate positioning solution using a smartphone GNSS antenna despite its poor properties.

    CDGNSS with Smartphone Antenna

    Figure 6 shows the result of an attempt to compute a CDGNSS solution using data collected from the GNSS antenna of a smartphone. The cluster of red near the top of the phone represents 400 CDGNSS position estimates over a 5-minute interval, superimposed on the photo and properly scaled. This cluster is referenced to a marker immediately under the phone whose position was surveyed to approximately 1-centimeter accuracy using a high-quality patch antenna. The mean of the cluster’s horizontal coordinates is approximately 2 centimeters from the phone’s internal GNSS antenna. Figure 6 shows the absolute horizontal accuracy of a CDGNSS solution through the smartphone’s antenna is approximately 2 centimeters.

    Figure 6 . Successful CDGNSS solution using data collected from smartphone antenna. The red cluster represents 400 CDGNSS solutions over 5 minutes, superimposed and properly scaled.
    Figure 6 . Successful CDGNSS solution using data collected from smartphone antenna. The red cluster represents 400 CDGNSS solutions over 5 minutes, superimposed and properly scaled.

    The data in Figure 6  were collected with a large conductive backplane below the smartphone. However, the backplane is unnecessary. The opening photo shows the result of a CDGNSS positioning solution computed using data collected from the smartphone antenna while the device was held in the extended hand of the author. The cluster of red represents the computed 3-dimensional position of the phone over a 300-second interval, superimposed on the photo and properly scaled. The author’s hand moved slightly during the interval, as reflected in the figure.

    The opening photo also shows the residuals corresponding to the handheld CDGNSS solution. This shows how the residuals look in practice for a scenario in which the phone is held by a user. The residuals look fairly clean, that is, they have a small variance and their mean is approximately zero. It is not uncommon for the residuals to look this good; however, cases do arise in which the residuals are considerably worse due to a combination of poor antenna gain in the direction of the non-reference satellite, coupled with ample gain in the direction of a multipath signal.

    The possibility of CDGNSS-enabled centimeter positioning using a smartphone antenna has been previously conjectured, but — to our knowledge — Figure 6 and the opening photo represent the first published demonstrations that this is indeed possible. This significant result portends a vast expansion of centimeter-accurate positioning into the mass market. However, serious challenges must be overcome before mass-market CDGNSS can become practical. Some of these challenges will be studied in the next few sections.

    Static Scenario. Figure 7 shows the empirical probability of successful ambiguity resolution for data collected from four antennas, one of each of the different grades discussed earlier. For each antenna, seven satellites were tracked at approximately the same location and time of day. Each trace was computed from 12 batches of double-differenced carrier phase data.

    Each trace represents an empirically-derived success rate computed from 12 batches of phase data as follows:

    • For a given batch, at each epoch the filter outputs its best estimate of the integer ambiguities on the basis of the data ingested thus far.
    • The estimate from step 1 is compared against the true set of integer ambiguities which were acquired in advance by processing a much longer batch of data. If correct, a flag is set at that epoch to “1”; if incorrect, the flag is set to 0.
    • For each epoch, the flags produced in step 2 are averaged across all 12 batches to generate each trace.
    Figure 7. Residuals for CDGNSS solution depicted in the opening photo.
    Figure 7. Residuals for CDGNSS solution depicted in the opening photo.

     

    As shown by the green trace in Figure 7, the smartphone-grade antenna required 400 seconds to achieve a 90% ambiguity resolution success rate; in other words, it manifested a 400-second TAR at 90%. This would surely exceed the patience of most smartphone users. Also shown are traces for the other three antenna grades. The higher-quality antennas yield shorter TARs for a given success rate, primarily due to their superior multipath suppression.

    Note that the loss in received signal power due to the smartphone antenna’s poor gain turns out to be tolerable — the signals arriving from the smartphone-grade antenna can be tracked without cycle slipping. Therefore, the outstanding challenge preventing fast ambiguity resolution for data collected from smartphone-grade antennas is the severe time-correlated multipath errors in the double-differenced carrier phase data.

    Decreasing TAR via More Signals. There are ways to mitigate the impact of multipath on the CDGNSS TAR, even the severe multipath experienced by low-quality antennas. It has been shown that the volume of the integer ambiguity search space, and thus TAR, decreases as a function of the number of double-differenced phase time histories available, which, for single-frequency CDGNSS, is one less than the number of satellites tracked. Consequently, an acceptable TAR can always be achieved with enough satellites tracked.

    Figure 8 shows the reduction in TAR for an increasing number of satellites. Each trace was computed from 720 non-overlapping 2-minute batches of data taken from a survey-grade antenna over a 24-hour interval. A decreasing elevation mask angle was used to allow an increasing number of SVs to participate in the CDGNSS solution. For a given 2-minute batch of data, an elevation mask was first applied to all but the highest five satellites. Double-difference phase data from these satellites were then processed by the CDGNSS filter to compute an empirical probability of successful integer ambiguity resolution. Next, the elevation mask was reduced until one additional satellite was in view, and the process repeated to produce all traces shown.

    Figure 8 makes clear that each additional double-differenced phase time history, although corrupted by its own multipath-induced phase errors, significantly decreases the overall TAR. Note that although Figure 8 was produced from data collected via a survey-grade antenna, a similar trend would apply for the smartphone-grade antenna. One implication of Figure 8 is that smartphone-based CDGNSS would benefit greatly from the additional double-differenced measurements that a multi-frequency GNSS receiver could provide. For example, at the time of writing there are 14 operational GPS satellites broadcasting unencrypted civil signals at the GPS L2 frequency (1227.6 MHz), and 7 broadcasting civil signals at the GPS L5 frequency (1176.45 MHz). With some modification of the smartphone GNSS antenna and chipset, these modernized GPS signals could be exploited to reduce TAR. However, the narrow profit margins on mass-market GNSS antennas and chipsets militate against multi-frequency architectures.

    Figure 8. Probability of successful ambiguity resolution vs. time as a function of the number of satellite vehicles (SVs) tracked.
    Figure 8. Probability of successful ambiguity resolution vs. time as a function of the number of satellite vehicles (SVs) tracked.

    Decreasing TAR via Random Motion. There is a second way to reduce TAR under severe multipath conditions. Unlike TAR reduction via additional signals, the theory and practice of this second technique have not been previously treated in the literature. Moreover, the technique is well-suited for smartphones, which are typically hand-held and mobile. This simple technique consists of gently moving the smartphone in a quasi-random manner within a wavelength-scale volume. The key to this technique’s effectiveness is that, whereas multipath-induced phase measurement errors are typically time-correlated on the order of hundreds of seconds for a static receiving antenna, their spatial correlation is on the order of one wavelength, or approximately 19 centimeters at the GPS L1 frequency. As a result, random wavelength-scale antenna motion transforms the phase residuals from slowly-varying when the antenna is static, as shown in Figure 9, to quickly-varying when the antenna is dynamic, as shown in Figure 10.

    Figure 9. Residuals for data captured from smartphone-grade antenna while static.
    Figure 9. Residuals for data captured from smartphone-grade antenna while static.
    Figure 10. Data from smartphone-grade antenna as it experienced wavelength-scale random motion, 2–5 cm/second.
    Figure 10. Data from smartphone-grade antenna as it experienced wavelength-scale random motion, 2–5 cm/second.

    Put another way, autocorrelation time of the phase residuals decreases from hundreds of seconds when the antenna is static, as shown in Figure 11, to less than a second when the antenna is moved even slowly (a few centimeters per second), as shown in Figure 12. More vigorous antenna motion would be possible if the phone’s inertial devices were used to aid the phase tracking loops.

    Figure 11. Autocorrelation functions corresponding to the phase residuals in Figure 9.
    Figure 11. Autocorrelation functions corresponding to the phase residuals in Figure 9.
    Figure 12. Autocorrelation functions corresponding to phase residuals in Figure 10.
    Figure 12. Autocorrelation functions corresponding to phase residuals in
    Figure 10.

    The shorter phase error decorrelation time resulting from random antenna motion effectively increases the information content per unit time that each double-differenced phase measurement provides to the CDGNSS filter, thus decreasing the time to ambiguity resolution.

    Figure 13 compares empirical success rates for three different antennas under static and dynamic scenarios. As expected, motion reduces the time-to-ambiguity resolution for the smartphone-grade and low-quality patch antenna. But, somewhat counterintuitively, motion increases the TAR for the survey-grade antenna. This discrepancy reflects a tradeoff within the CDGNSS filter. While it is true that the phase measurement errors decorrelate much faster when the antenna is moving — increasing the per-epoch information provided to the filter — it is also the case that the filter can no longer employ a hard motion constraint. For the high-quality antennas, the increased information per epoch due to faster phase error decorrelation is completely counteracted by a loss in information per epoch due to uncertainty (lack of constraint) in the motion model. Also, for the high-quality antennas, multipath in the reference antenna’s phase measurements is not insignificant compared to multipath in the mobile antenna, and this reference multipath exhibits the usual 100–200 second correlation time for a static antenna. On the other hand, phase error decorrelation via random antenna motion offers the lower-quality antennas a larger net information gain because their multipath-induced phase errors are so large. Consequently, for the smartphone-grade antenna, motion substantially reduces the 90 percent success TAR, which drops from 400 to 215 seconds.

    Figure 13. Probability of successful ambiguity resolution versus time for three different antennas under static and dynamic scenarios.
    Figure 13. Probability of successful ambiguity resolution versus time for three different antennas under static and dynamic scenarios.

    Conclusions and Future Work

    Centimeter-accurate positioning was demonstrated based on data sampled from a smartphone-quality GNSS antenna. An empirical analysis revealed that the extremely poor multipath suppression of these antennas is the primary impediment to fast resolution of the integer ambiguities that arise in the carrier phase differential processing used to obtain centimeter accuracy. It was shown that, for low-quality smartphone-grade GNSS antennas, wavelength-scale random antenna motion substantially reduces the ambiguity resolution time.

    Future work will study the effectiveness of combining antenna motion with a motion trajectory estimate derived from non-GNSS smartphone sensors to further reduce the integer ambiguity resolution time. This technique, which is a type of synthetic aperture processing applied to the double-differenced GNSS phase measurements, effectively points antenna gain enhancements in the direction of the overhead GNSS satellites, thereby suppressing multipath arriving from other directions. Preliminary results show that this technique offers modest benefit beyond the unaided random motion technique discussed herein.

    Acknowledgment

    The material in this article was first presented at ION GNSS+ 2014 in the paper “Centimeter Positioning with a Smartphone-Quality GNSS Antenna.”


    Kenneth M. Pesyna, Jr. is a Ph.D. candidate in the Department of Electrical and Computer Engineering at the University of Texas at Austin. He is a member of the University of Texas Radionavigation Laboratory and the Wireless Networking and Communications Group.

    Robert W. Heath, Jr. is a Cullen Trust Endowed Professor in Electrical and Computer Engineering at UT-Austin, and director of the Wireless Networking and Communications Group. He received his Ph.D. in electrical engineering  from Stanford.

    Todd E. Humphreys is an assistant professor in the department of Aerospace Engineering  and Engineering Mechanics at UT-Austin, and director of the UT Radionavigation Laboratory. He received a Ph.D. in aerospace engineering from Cornell University.

  • New NovAtel RTK GNSS Receiver Offers Advanced Heading Capabilities

    New NovAtel RTK GNSS Receiver Offers Advanced Heading Capabilities

    NovAtel's FlexPak6D enclosed GNSS receiver.
    NovAtel’s FlexPak6D enclosed GNSS receiver.

    NovAtel Inc. has announced the FlexPak6D enclosed GNSS receiver, a flexible dual-antenna solution for application developers seeking a high-precision heading-capable positioning engine for space-constrained applications.

    Designed for efficient and rapid integration, the compact, lightweight receiver tracks GPS, GLONASS, Galileo and BeiDou. Antenna placement is flexible, which means the antenna baseline can be set according to space available on the vehicle and the heading accuracy required. In addition, the modular nature of the FlexPak6D’s OEM6 firmware provides users with the ability to configure the receiver for their unique application needs.

    Scalable for sub-meter to centimeter-level positioning, the FlexPak6D delivers NovAtel’s ALIGN precision heading and relative heading firmware, as well as its GLIDE firmware for smooth decimeter-level pass-to-pass accuracy, and RAIM for increased GNSS pseudorange integrity.

    “Our FlexPak6D builds on our popular lightweight FlexPak form factor,” said Jason Hamilton, vice president of marketing for NovAtel. “The modular, flexible design makes it easy to integrate into land, air and marine-based industries, particularly for low payload UAV and robotic applications.”

    The FlexPak6D will be available for shipping February 2, 2015.

  • Innovation: Python GNSS Receiver

    Innovation: Python GNSS Receiver

    An Object-Oriented Software Platform Suitable for Multiple Receivers

    By Eliot Wycoff, Yuting Ng, and Grace Xingxin Gao

    INNOVATION INSIGHTS by Richard Langley
    INNOVATION INSIGHTS by Richard Langley

    AND NOW FOR SOMETHING COMPLETELY DIFFERENT. My first introduction to computer programming was during a visit to the Faculty of Mathematics at the University of Waterloo when I was still a high school student. We got to keypunch a simple program onto cards using the FORTRAN programming language and submit the “job” to the university’s IBM 7040 mainframe computer. That visit helped seal the choice of Waterloo for my undergraduate education — but in applied physics, not math.

    Once I became an undergraduate, I learned how to properly program in FORTRAN (actually FORTRAN IV with the WATFOR compiler developed at Waterloo) and in assembly language on the SPECTRE virtual computer (written in FORTRAN), both on Waterloo’s new IBM 360 mainframe. Knowing how to program was instrumental in my graduate work on the geodetic application of very long baseline interferometry (VLBI) at York University. Being humble Canadians (and despite the fact that VLBI was invented in Canada), we called it just LBI. My LBI data analysis FORTRAN program was initially on a box full of punched cards that I would have to carry back and forth to the computer center being careful not to drop the box and get the cards out of order.     

    While I was a graduate student, I also got to use the Spiras-65 minicomputer that controlled the playback of the LBI recorded tapes at the National Research Council in Ottawa.  It was programmed using punched paper tape.

    I saw the progression from punched tape and cards to the use of terminals to enter programs and magnetic tapes for storing them and the data to be analyzed. The University of New Brunswick, where I came to work in 1981, was one of the first universities in Canada to introduce an interactive terminal- (or work-station-) based time-sharing system for programmers to develop and run their jobs on the central computer. The last card reader at UNB was retired in 1987.

    By the time I came to work at UNB, the era of the personal computer had already dawned. Although the Department of Surveying Engineering (as it was then called) acquired an HP 1000 minicomputer for various research tasks, personal computers began to show up on faculty members’ desks and in their labs. Some of us started out with Apple II computers (we used them, for example, for recording data from Transit–U.S. Navy Navigation Satellite System–receivers) and progressed through various Macintosh models.

    Once I became a professor, I did less and less programming myself–leaving it up to my graduate students to do the heavy lifting in that area. These days, my personal programming efforts are limited to short scripts mostly using the Python language. Python, which gets its name from the Monty Python’s Flying Circus television series, was first introduced back in 1991 but it is only relatively recently that its popularity has taken off. Python can be run on a wide variety of platforms under many operating systems.

    One of the key features of Python is that it supports multiple programming paradigms, including object-oriented programming (OOP).  OOP is a programming methodology based on the use of data structures, known as objects, rather than just functions and procedures. The objects, organized into classes, exchange information in a standardized way and their use helps ensures good code modularity.

    In this month’s column, we take a look at how Python has been used to develop a software-defined GNSS receiver — one well-suited to processing data from a network of receiver front ends.


    “Innovation” is a regular feature that discusses advances in GPS technology and its applications as well as the fundamentals of GPS positioning. The column is coordinated by Richard Langley of the Department of Geodesy and Geomatics Engineering, University of New Brunswick. He welcomes comments and topic ideas. Email him at lang @ unb.ca.


    With billions of GNSS-enabled devices in use today, the potential gains from harnessing data collected over a network of GNSS receivers has never been greater, yet the necessary architectures to handle and extract useful data collected over such networks are not well explored. Traditional uses of GNSS in cooperative positioning treat individual GNSS receivers as “black boxes” that merely output navigation solutions. As such, the wealth of information contained in each receiver’s raw signals is largely discarded.

    Of particular interest are ideas such as inter-receiver aiding, in which networked receivers might share acquisition, tracking, and navigation information (possibly in real time) to improve receiver performance. In addition, a network of receivers might also be used as a sensing tool: it is expected that atmospheric parameters, for instance, could be recovered by analyzing the raw signal data arriving at an appropriately sized network.

    In light of these interesting research areas, it would be expedient to develop a set of tools that can process and handle the raw data being produced at every receiver in a GNSS receiver network. Existing software-defined receivers (SDRs) have gone a long way towards making the fast prototyping of new receiver architectures possible. An SDR attempts to shift as many receiver functions, such as mixing and tracking, from being implemented in hardware to being implemented in software. This allows for fast prototyping as receiver components can be more quickly modified in software than in hardware. The hardware components that a GNSS SDR still requires are an antenna and a front end including an analog-to-digital converter (ADC). An analog GNSS signal is received at the antenna. It is then mixed to an intermediate frequency and digitized by the ADC. The digital stream is then processed by the SDR’s software component.

    But with regard to processing data from a receiver network, existing SDRs have a number of notable flaws. In brief, existing software receivers are designed to process the data arriving at one real-world receiver. Thus a procedural coding design is typically used. While procedural code is a good solution for the linear processes that occur in a single receiver (acquisition, tracking, demodulation of the navigation data, position calculations, and so on), this software design style does not adapt well to the task of performing all of these actions on multiple receivers with the additional goal that each receiver shares tracking data with every other one. In such scenarios, not only is there data being produced for every receiver in the network, but there is also data being produced about the relationships between the receivers in the network. Thus, an SDR that was originally designed to process data from only one receiver will prove difficult to adapt to the task of processing many.

    Luckily, object-oriented programming, a well-known and widely used software design philosophy, is well suited to the receiver network problem. Therefore, for this work, we designed and implemented an object-oriented software platform for many receivers. Python was chosen as the programming language because of its support for object-oriented programming, its portability, its free cost, its numerical abilities (using open-source libraries such as NumPy and SciPy), and its ease of use. And as a reference, an existing Matlab software receiver was used as a basis for developing many of the core algorithms in this work. We call our development simply the Python Receiver.

    Design

    Many of the core functions in the Python Receiver are modeled after those found in the Matlab development. Thus, this particular implementation is suited for the raw GPS L1 signal data mixed to an intermediate frequency by the SDR front end. In addition, the basic algorithms for acquisition, scalar tracking, and navigation are similar to the Matlab ones, with the exception that acquisition is made more robust by using multiple noncoherent integrations. The primary innovation of this software, however, is in the way in which the code is organized. For tracking multiple receivers, the Python Receiver was designed under an object-oriented approach.

    FIGURE 1 illustrates the main objects that a user would be expected to use in the Python Receiver. Each object is defined as a class, and as such each object is capable of storing object-specific data as well as performing certain object-specific functions. The hierarchy of Figure 1 roughly illustrates which objects are defined as members of other classes for typical usage. Thus, inside any instance of the network class may exist any number of receiver objects. Likewise, an instance of the constellation class may be home to any number of satellite objects.

    FIGURE 1. Typical object (class) hierarchy.
    FIGURE 1. Typical object (class) hierarchy.

    For data coming from a single real-world receiver, use of the Python Receiver would typically be as follows. First, a user would initialize an instance of the receiver class using a dictionary of predefined settings, such as the file location of the data source. Second, the user would initialize a constellation object of satellites by passing the pseudorandom noise (PRN) code values of each satellite to be included in the constellation. At this point, the user could then use built-in functionality in the receiver object to perform acquisition of all of the satellites in the constellation. Results of this acquisition attempt would be stored in the receiver object, where they could then be used to run the receiver’s built-in scalar tracking functionality. Likewise, scalar tracking data would be stored in the receiver object, and again the user could use the receiver’s built-in navigation functionality to decode the navigation bits produced during scalar tracking and perform navigation computations. Satellite-specific ephemerides would be stored in the relevant satellite objects.

    Navigation solutions are stored as a part of the receiver’s state object. The state object, which is also used in the satellite class, is a container for holding state information in the Earth-centered Earth-fixed (ECEF) coordinate system (such as position and velocity) and clock terms, and it also provides the ability to return position coordinates in other systems, such as the GPS geodetic system (frame) of WGS 84. While it is not a key feature of the Python Receiver, the state object is designed as an object so that it can be readily used elsewhere should an algorithm need to store state information and have coordinate transformations readily available.

    Tracking channels need not be restricted to the hierarchy shown in Figure 1. During operation for just one data source, the scalar tracking function defined at the receiver level will initialize a sufficient number of tracking channels to track all of its observed satellites. However, when operating on multiple sources of data and with the intent to share tracking outputs between channels, it is helpful to place tracking channels into groups, as shown in FIGURE 2. In the example that will be discussed in following sections, two real-world receivers observed a similar set of satellites. It was therefore helpful to define channel groups for each commonly observed satellite, with one channel in the group corresponding to the satellite as tracked by the first receiver, and the other channel corresponding to the satellite as tracked by the second. Tracking groups as a class, however, may be easily modified for other experimental purposes.

    FIGURE 2. Left: an independent tracking channel (corresponding to one tracking channel object). Right: a channel group. Note that in the channel group, updates to the code and carrier phase of each channel may be performed cooperatively.
    FIGURE 2. Left: an independent tracking channel (corresponding to one tracking channel object). Right: a channel group. Note that in the channel group, updates to the code and carrier phase of each channel may be performed cooperatively.

    Independent tracking channels have an update function that processes the next segment of raw data in three main steps: computing correlations (early, late, and prompt), producing discriminator outputs, and generating code and carrier-frequency updates. For a group of channels, this sequence of steps is interrupted after discriminator outputs have been computed. At this point, the channel group may instruct the tracking channels to update their code and carrier frequencies independently or through some other cooperative means that considers data across all of the channels.

    As for the last few classes: correlators and filters are defined as objects so that they can be easily changed depending on the experimental circumstances. And satellites, in addition to holding satellite-specific ephemerides, have built-in functionality to return their locations given a particular epoch of GPS Time.

    Naturally, core functions such as these would be found in traditional software receivers, but by repackaging them into the object-oriented framework, both code reusability and modifiability increase. And in addition, by defining classes for networks of receivers and groups of tracking channels, simulations and experiments involving cooperative positioning of receivers become easier to conduct.

    Experiment

    To help illustrate how the Python Receiver lends itself to the task of cooperatively tracking multiple receivers, concurrent data from two SDR front ends was collected on a boat in Lake Titicaca just offshore from Puno, Peru. The boat was a small motorized ferry capable of transporting approximately twenty passengers. One antenna and front end, hereafter referred to as “Receiver X” was placed on the port side of the boat, while the other, “Receiver Y” was placed on the starboard side. Maintaining a fixed baseline, both receivers captured raw GPS L1 signals from separate portions of the sky and mixed them to an intermediate frequency of 5.456 MHz. Raw data collection was performed concurrently at both receivers for 15 minutes as the boat returned from the floating islands of the Uros people to the dock at Puno. Finally, while Lake Titicaca is at a high elevation in the Altiplano (the Andean Plateau), the surrounding mountains do not rise far above the horizon, and thus visibility was quite good in most directions.

    Some challenges, however, present themselves in this data set. While Receiver X was able to acquire eight satellites, and Receiver Y was able to acquire 10, the signal quality at Receiver Y was generally poor. In Figure 3, in-phase prompt correlator outputs from traditional scalar tracking are shown for both Receivers X and Y and satellites with PRN codes 27 and 29. For satellite 27, Receiver Y loses lock of the signal between code periods 100,000 and 200,000, and for satellite 29, it completely loses track of the signal after only a few thousand code periods. (Recall that the C/A-code period is one millisecond.)

    FIGURE 3. The in-phase prompt correlator outputs for both receivers and satellites PRN 27 and 29. The cyan dots are correlator outputs, the red line is the locking metric, and the dashed green and blue lines are the thresholds set for determining good and poor lock, respectively. Locking metric values above the dashed green line represent a good lock, and values below the dashed blue line represent loss-of-lock. Note that y-axis values differ from graph to graph.
    FIGURE 3. The in-phase prompt correlator outputs for both receivers and satellites PRN 27 and 29. The cyan dots are correlator outputs, the red line is the locking metric, and the dashed green and blue lines are the thresholds set for determining good and poor lock, respectively. Locking metric values above the dashed green line represent a good lock, and values below the dashed blue line represent loss-of-lock. Note that y-axis values differ from graph to graph.

    To better characterize the tracking performance of each receiver-satellite pair, a locking metric was designed and implemented, the values of which are shown as the red lines in the graphs of Figure 3. Inspired by the earlier use of the square-law detector, we have expressed the metric as:

    Python-Eq1(1)

    where N is the number of most recent correlator samples, Ii and Qi are the ith in-phase and quadrature-phase prompt correlator outputs, and the square-root operator returns the negative square root of the absolute value of the expression under the radical if that expression is negative.

    After visually examining the relationship of this locking metric with the quality of the in-phase prompt correlator outputs, two thresholds were determined in order to better characterize the quality of the tracking loop lock. The first threshold, represented as the dashed green lines in the graphs of Figure 3, is the threshold above which the tracking loops were considered locked well. Its value was set to 250. The second threshold, whose value was set to 150 and is represented by the dashed blue lines, is the threshold below which the tracking loops were considered to be in a complete loss-of-lock situation. Locking metric values between 150 and 250 were considered as representing a situation in which the tracking loops were weakly locked to the incoming signals.

    Despite the poor performance of Receiver Y in tracking many of its signals, navigation functionality in the Python Receiver was still able to recover sufficient ephemerides from the tracking data to perform position calculations. FIGURE 4 shows the navigation solutions for Receiver Y over a 13-minute interval, roughly capturing the route that the ferry took westward back to Puno. Note that the moustache-shaped region in the right-hand side of the map is the collection of floating islands of the Uros. Just as the ferry left these islands, the navigation solutions for Receiver Y become much nosier. Possible reasons for this are the slight change in heading that the ferry made, or the thicket of reeds that surrounded the boat during this portion of the journey. Navigation results for Receiver X were much less noisy.

    FIGURE 4. The trip back to Puno on the left (west) from the floating islands of the Uros on the right (east) as determined by traditional scalar tracking and navigation at Receiver Y. Image courtesy of Google Earth and the GPS Visualizer.
    FIGURE 4. The trip back to Puno on the left (west) from the floating islands of the Uros on the right (east) as determined by traditional scalar tracking and navigation at Receiver Y. Image courtesy of Google Earth and the GPS Visualizer.

    Cooperative Scalar Tracking

    While all of these traditional results were obtained using the Python Receiver, they could have just as easily been obtained using procedurally coded receivers. Assuming, however, that one is interested in performing experiments that involve data sharing between multiple receivers, the Python Receiver lends itself handily to the task.

    An experiment was devised in which scalar tracking performed at both Receivers X and Y would be done cooperatively. In particular, it was observed that often when one of the two receivers momentarily lost track of its signal for a particular satellite, the other receiver would be tracking well. In addition, it was noted that because the two receivers maintained a fixed baseline during tracking, their tracking channels should have maintained a steady difference in code phases that changed slowly provided that the receiver-satellite geometry did not change quickly. As shown in FIGURE 5, the only violation of this scenario would occur when one of the two receivers lost lock and thus allowed for drift in its code-tracking loop. It should be noted that unlike the situation in Figure 5, the reported code difference between the two receivers suffered from a bias that grew linearly in time. This bias, which was likely due to clock errors in one or both of the receiver front ends, was eliminated through a linear regression before the plotting of the figure.

    FIGURE 5. The code-phase difference between Receivers X and Y for PRN 27 from 300,000 to 500,000 milliseconds. Note the large variance around 400,000 milliseconds corresponding to a loss-of-lock for Receiver Y.
    FIGURE 5. The code-phase difference between Receivers X and Y for PRN 27 from 300,000 to 500,000 milliseconds. Note the large variance around 400,000 milliseconds corresponding to a loss-of-lock for Receiver Y.

    All of these observations motivated the following cooperative scalar tracking design. First, any satellite that was observed by only one receiver would be independently tracked by that receiver in the traditional manner. A single tracking loop object would be allocated in Python for this particular receiver-satellite pair. Second, any satellite that was observed by both receivers would have a channel group object allocated in Python. This channel group would contain two tracking channel objects, one for each receiver.

    As shown in Figure 2, this channel group required specific code to be written to handle the cooperative updates of both receivers’ code and carrier frequencies. The algorithm was designed as follows. For each update epoch (generated by a call of the channel group’s update function), if both of the tracking channels were locked to their incoming signals, the channel group would save their code-phase difference for that code period. And since both channels were locked, both would update their code and carrier frequencies in the traditional manner, relying on discriminator outputs only.

    If, on the other hand, one of the tracking channels was in a loss-of-lock situation, the channel group would search the previous 5,000 milliseconds of data for code periods during which, presumably, both tracking channels were mutually locked. This data would contain information about the expected code-phase difference between the two tracking channels at the current code period. At this point, a linear regression on the data from the mutually locked code periods was used to determine this expected code-phase difference. Finally, we note again that this expected code-phase difference would only remain valid under the assumption that the receiver-satellite geometry was not changing rapidly, as was the case for this data. But acknowledging that some changes in the geometry might occur (such as a change in heading of the boat) is the reason why the search interval for mutually locked data was limited to five seconds.

    Assuming that one of the receivers was in a loss-of-lock situation and that sufficient data from the past five seconds existed to generate an estimate of the current expected code-phase difference, the channel group could then make a cooperative update of the lockless tracking channel. For this channel, the channel group would replace the traditional code-tracking discriminator outputs with the offset of the expected code-phase difference dexp from the currently observed code-phase difference dcur. In the following equation, the new discriminator output is denoted as c:

    Python-Eq2. (2)

    Expressing dcur=ycurxcur and dexp=yexpxexp, where xcur/exp and ycur/exp represent current and expected code phases at two receivers, we can rewrite Equation 2 as

    Python-Eq3  (3)

    or

    Python-Eq4  (4)

    since we expect the x receiver to be locked, and therefore Python-Eq4-a .

    Some finer points to mention include that the “loss-of-lock” and “tracking well” designations were determined by way of the locking metric defined in the previous section. In addition, if a receiver was “tracking weakly,” it would update its code and carrier frequencies by relying solely on its own discriminator outputs. Also, because in traditional scalar tracking loss-of-lock might occur for an extended interval greater than five seconds at one receiver (such as Receiver Y’s tracking of satellite 27 seen in Figure 3 between 300,000 and 400,000 milliseconds), whenever the channel group was called to cooperatively update a lockless tracking channel’s code frequency, it would record the current code-phase difference between both receivers. Under all scenarios, the carrier-frequency update would be done independently at each channel using discriminator outputs alone. And finally, in order for both receivers to share relevant data with each other during tracking, clock bias terms found after traditional scalar tracking were used to align in time the raw data files for each receiver appropriately.

    Results and Discussion

    Using cooperative scalar tracking, drifting of the code-phase difference during code periods when one of the receivers is experiencing loss-of-lock is expected to be suppressed. And indeed, results such as those shown in FIGURE 6 verify this expectation. Since cooperative scalar tracking does not attempt to modify the way either receiver tracks during periods of good lock, this type of modified scalar tracking is not expected to produce less noisy tracking results. It is expected, however, to help lockless tracking channels to regain track after short signal outages, similar to the benefits of vector tracking.

    FIGURE 6. The code-phase difference between Receivers X and Y for PRN 27 from 300,000 to 500,000 milliseconds, this time using cooperative scalar tracking. Presence of the red line indicates code periods during which cooperative code-phase updates were made for Receiver Y. Note that noisy drifting of the code-phase difference is suppressed.
    FIGURE 6. The code-phase difference between Receivers X and Y for PRN 27 from 300,000 to 500,000 milliseconds, this time using cooperative scalar tracking. Presence of the red line indicates code periods during which cooperative code-phase updates were made for Receiver Y. Note that noisy drifting of the code-phase difference is suppressed.

    Strikingly, this form of cooperative tracking allowed for Receiver Y to continually track the signal from satellite 29 (albeit with occasional outages) for the full thirteen minutes of data shown in FIGURE 7. Whereas in Figure 3, Receiver Y very quickly loses track of satellite 29, Figure 7 shows that Receiver Y, under cooperative scalar tracking, can maintain a good enough lock on the signal that by roughly 750,000 code periods, it is able to pick up the signal again quite strongly. This change in signal strength may have been due to a slight change in heading that the ferry made near Isla Taquile towards the end of this data set (see Figure 4 and FIGURE 8).

    FIGURE 7. The in-phase prompt outputs for Receiver Y and PRN 29 using cooperative scalar tracking. Compare this to the bottom-right graph in Figure 3. Inter-receiver aiding allowed Receiver Y to track this signal for a majority of the code periods.
    FIGURE 7. The in-phase prompt outputs for Receiver Y and PRN 29 using cooperative scalar tracking. Compare this to the bottom-right graph in Figure 3. Inter-receiver aiding allowed Receiver Y to track this signal for a majority of the code periods.
    FIGURE 8. The trip back to Puno as determined by Receiver Y after cooperative scalar tracking and navigation computations. Compared to Figure 4, the navigation solutions are less noisy. Image courtesy of Google Earth and the GPS Visualizer.
    FIGURE 8. The trip back to Puno as determined by Receiver Y after cooperative scalar tracking and navigation computations. Compared to Figure 4, the navigation solutions are less noisy. Image courtesy of Google Earth and the GPS Visualizer.

    Given the locking metric defined in the section “Experiment,” quantitative measures of how often each channel spent locked or in loss-of-lock can be made. In total, both receivers tracked six common satellites (with each receiver also tracking other satellites independently). TABLE 1 shows the locking frequencies for each commonly tracked satellite.

    TABLE 1. Percent of time each tracking channel spent locked. Lock was designated if the locking metric was above 150. The best values for Receiver Y are highlighted in green, with the most notable improvement occurring for satellite 29.
    TABLE 1. Percent of time each tracking channel spent locked. Lock was designated if the locking metric was above 150. The best values for Receiver Y are highlighted in green, with the most notable improvement occurring for satellite 29.

    Granted that the drift in the code phase for lockless tracking channels is curtailed in cooperative scalar tracking, an improvement in navigation solutions is also expected. This expectation is verified by comparing the qualitative level of noise in the solutions of Figure 8 to the solutions in Figure 4. Notably, the noise in the reed thicket (the section of the route immediately after leaving the moustache-shaped floating islands region) is suppressed. Not shown are the navigation solutions for the port side receiver, Receiver X, which by comparison to Receiver Y were relatively good in both forms of scalar tracking.

    Conclusion

    The experiment we carried out highlighted the abilities of the Python Receiver. Data from two SDR front ends and associated antennas placed on either side of a small transport ferry was used to track both receivers by using groups of tracking channels that could cooperatively modify their individual channels’ code and carrier frequencies. In this way, loss-of-lock in many of the tracking channels was avoided leading to improved navigation precision. More importantly, it is expected that future experiments like these can be easily implemented within the framework of the Python Receiver, and thus topics like cooperative vector tracking might be more easily investigated.

    Acknowledgments

    This article is based, in part, on the paper “A Python Software Platform for Cooperatively Tracking Multiple GPS Receivers” presented at ION GNSS+ 2014, the 27th International Technical Meeting of the Satellite Division of The Institute of Navigation, held in Tampa, Florida, September 8–12, 2014.

    Manufacturers

    The Python Receiver uses SiGe GN3S v3 Samplers, developed by the University of Colorado and SiGe Semiconductor (acquired by Skyworks Solutions Inc., Woburn, Massachusetts) and marketed by SparkFun Electronics, Niwot, Colorado.


    ELIOT WYCOFF received his B.S. in applied mathematics from Columbia University, New York, in 2011. While working on the Python Receiver, he was a graduate student in the Department of Aerospace Engineering at the University of Illinois at Urbana-Champaign (UIUC).

    YUTING NG obtained a B.S. in electrical and computer engineering from UIUC in 2014. She is currently a graduate student in the Department of Aerospace Engineering, UIUC.

    GRACE XINGXIN GAO is an assistant professor in the Department of Aerospace Engineering, UIUC. She received her B.S. in mechanical engineering in 2001 and her M.S. in electrical engineering in 2003, both from Tsinghua University, China. She obtained her Ph.D. in electrical engineering at Stanford University in 2008. Before joining UIUC in 2012, Gao was a research associate at Stanford University.


    FURTHER READING

    • Authors’ Conference Paper

    A Python Software Platform for Cooperatively Tracking Multiple GPS Receivers” by E. Wycoff and G.X. Gao in Proceedings of ION GNSS+ 2014, the 27th International Technical Meeting of the Satellite Division of The Institute of Navigation, Tampa, Florida, September 8–12, 2014, pp. 1417–1425.

    Software-Defined GNSS Receivers

    Digital Satellite Navigation and Geophysics: A Practical Guide with GNSS Signal Simulator and Receiver Laboratory by I.G. Petrovski and T. Tsujii with foreword by R.B. Langley, published by Cambridge University Press, Cambridge, U.K., 2012.

    Software GNSS Receiver: An Answer for Precise Positioning Research” by T. Pany, N. Falk, B. Riedl, T. Hartmann, G. Stangl, and C. Stöber in GPS World, Vol. 23, No. 9, September 2012, pp. 60–66.

    A Software-Defined GPS and Galileo Receiver: A Single-Frequency Approach by K. Borre, D.M. Akos, N. Bertelsen, P. Rinder, and S.H. Jensen, published by Birkhäuser Engineering, Springer-Verlag GmbH, Heidelberg, 2007.

    GNSS Software Defined Radio: Real Receiver or Just a Tool for Experts?” by J.-H. Won, T. Pany, and G. Hein in Inside GNSS, Vol. 1, No. 5, July–August 2006, pp. 48–56.

    Satellite Navigation Evolution: The Software GNSS Receiver” by G. MacCougan, P.L. Normark, and C. Ståhlberg in GPS World, Vol. 16, No. 1, January 2005, pp. 48–55.

    Python

    Learn Python in One Hour by V.R. Volkman, published by Modern Software Press, L.H. Press Inc., Ann Arbor, Michigan, 2014.

    A Primer on Scientific Programming with Python by H.P. Langtangen, published by Springer-Verlag GmbH, Heidelberg, 2009.

    “Python for Scientific Computing” by T.E. Oliphant in Computing in Science & Engineering, Vol. 9, No. 3, May–June 2007, pp. 10–20, doi: 10.1109/MCSE.2007.58.

    Noncoherent Integration

    GNSS Radio: A System Analysis and Algorithm Development Research Tool for PCs” by J.K. Ray, S.M. Deshpande, R.A. Nayak, and M.E. Cannon in GPS World, Vol. 17, No. 5, May 2006, pp. 51–56.

    Fundamentals of Global Positioning System Receivers: A Software Approach, 2nd edition, by J. B.-Y. Tsui, published by Wiley-Interscience, John Wiley & Sons, Inc., Hoboken, New Jersey, 2005.

    “An Assisted GPS Acquisition Method Using L2 Civil Signal in Weak Signal Environment” by D.J. Cho, C. Park, and S.J. Lee in Journal of Global Positioning Systems, Vol. 3 No. 1-2, December 2004, pp. 25–31.

    GPS Position Display

    GPS Visualizer: Do-It-Yourself Mapping” website by A. Schneider.

    Square Law Detector

    “Lock Detection in Costas Loops” by A. Mileant and S. Hinedi in IEEE Transactions on Communications, Vol. 40, No. 3, March 1992, pp. 480–483, doi: 10.1109/26.135716.