People:Kjeld Jensen:u-blox NEO-6P GPS module

From FroboMind []
Jump to: navigation, search

More Electronics the Danish distributor of u-blox, the Swiss positioning and wireless chip and module company, has been so kind to provide us with a couple of engineering samples of their new NEO-6P GPS module. This allows us to add support for the module in ROS and FroboMind and use the modules in our current research projects. This page contains the information, we have collected so far.


This is an excerpt of what u-blox has said in their press release and at their website:

The NEO-6P GPS module embeds Precise Point Positioning (PPP) for low-cost, static and slow-moving applications. PPP is made possible by a proprietary algorithm combined with ionospheric correctional data received from satellite based augmentation systems such as WAAS (USA), EGNOS (Europe) and MSAS (Japan). The system achieves full accuracy with unobstructed sky view after only a few minutes of operation. The solution provides high accuracy positioning at a fraction of the cost of other high precision solutions. Our PPP solution is compact, standalone, and uses a single frequency GPS receiver. The NEO-6P also provides complete GPS satellite raw data allowing further accuracy improvement based on post processing by an external host.

The u-blox 6 protocol specification is a bit more detailed:

Precise Point Positioning (PPP) is a premium feature which offers enhanced positioning accuracy by utilizing the carrier phase measurements to smooth the pseudoranges measured to the satellites. The algorithm needs continuous carrier phase measurements to be able to smooth the pseudorange measurements effectively. Additionally ionospheric corrections like those received from SBAS or from GPS are required. A positioning improvement can only be expected in an environment with unobstructed sky view during a period on the order of minutes.

This sounds very interesting indeed. Using the traditional RTK-GPS solutions for field robotics is quite costly, and in many situations we can make do with a little less than the sub decimeter accuracy that they provide. At the same time the NEO-6P is really small and lightweight... It is certainly worth having a look at.



U-blox neo6p schematics.png U-blox neo6p pcb 3dmodel.png U-blox neo6p pcb.jpg

Schematics and PCB design by Carsten Albertsen, University of Southern Denmark.

The schematics and PCB were designed using Altium. The files have been released under a Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license, and you may download a copy here:


Serial port

Our PCB gives access to the NEO-6P GPS module serial port through a pinheader (TTL level) as well as through the USB interface (FTDI). The baudrate is 115.200 bps.


Below is a sample of the NMEA data output from the module each second when using the factory default configuration. The protocol is described in depth in the u-blox 6 Receiver Description and Protocol Specification document.


Please notice that the module supports these fix values:
0=Fix not available/invalid
1=GPS SPS Mode, Fix valid
2=Differential GPS, SPS Mode, Fix Valid
6=Estimated/Dead Reckoning

Power supply

Our PCB uses the USB 5V as single power supply. A converted 3.3V supply used for the NEO-6P chip is available through the pin header. The PCB provides 5V DC for the GPS antenna as well. This should be compatible with most GPS antennas.

Module configuration

By default the NEO-6P module outputs the NMEA messages GPRMC, GPVTG, GPGGA, GPGSA, GPGSV and GPGLL at a rate of 1Hz. For field robotics navigation and mapping purposes a higher output rate is highly desirable, and since this is primarily a matter of power consumption it makes sense to reconfigure the module to a 5Hz output and disable the GPRMC, GPGSA and GPGLL messages which do not provide valuable information to the field robot.

The NEO-6P module can be reconfigured using the u-center GPS evaluation software (Windows only). The NEO-6P has no means of saving the configuration during reset or power off even though the u-center software shows this option (this requires external eeprom or flash memory). The configuration therefore needs to be loaded each time the NEO-6P is reset or powered up.

Use a ready made configuration file

If you prefer to use a specific configuration, please follow the instructions on creating a new configuration file using u-center below. If you just want to change the output rate to 5Hz and disable the unused NMEA messages, you may save these lines to a text file and you are ready to go:

CFG-MSG - 06 01 08 00 F0 01 00 00 00 00 00 01
CFG-MSG - 06 01 08 00 F0 02 00 00 00 00 00 01
CFG-MSG - 06 01 08 00 F0 04 00 00 00 00 00 01
CFG-RATE - 06 08 06 00 C8 00 01 00 01 00

The lines above represents the changes to the default configuration only. Click to see the default configuration file.

Create a new configuration file using u-center

  • Menu View -> Configuration View
  • Select "RATE (Rates)" in the list
  • Set Measurement Period to 200 [ms]. Please notice that the u-blox protocol specification document describes: "The update rate has a direct influence on the power consumption. The more fixes that are required, the more CPU power and communication resources are required."
  • Press Send
  • Select MSG (Messages)
  • Select F0-01 NMEA GxGLL
  • Disable for all ports
  • Press Send
  • Select F0-02 NMEA GxGSA
  • Disable for all ports
  • Press Send
  • Select F0-04 NMEA GxRMC
  • Disable for all ports
  • Press Send
  • Menu Tools -> GPS Configuration...
  • Select GPS -> File to save the configuration to a text file.

Upload the configuration to the NEO-6P GPS module after reset

Hjalte Nygaard, University of Southern Denmark has written a small ubloxconf C++ program to upload a configuration to the u-blox GPS modules from a linux platform. The software is not yet well polished, but it works: Click to see the source code.

Evaluating the GPS module performance

We have made a series of tests with respect to accuracy and reliability in static and dynamic setups. These tests have been documented in the scientific paper listed below.

Jensen K., Larsen, M., Simonsen, T. and Jørgensen, R.N. Evaluating the performance of a low-cost GPS in precision agriculture applications. First RHEA International Conference on Robotics and associated High-technologies and Equipment for Agriculture. September 19-21, 2012, Pisa, Italy.

Abstract: Field Robots are often equipped with a Real Time Kinematic (RTK) GPS to obtain precise positioning. In many precision agriculture applications, however, the robot operates in semi-structured environments like orchards and row crops, where local sensors such as computer vision and laser range scanners can produce accurate positioning relative to the crops. GPS is then primarily needed for robust inter-row navigation. This work evaluates a new low-cost GPS. Static tests were used to test the absolute accuracy. To test the GPS in a precision agriculture environment it was installed on a robot driving in a simulated row crop field. The GPS supports raw data output as well and similar experiments were performed to evaluate the GPS when used in a RTK setup. In field tests more than 95% of the position errors were estimated to be within 2.6 m. In RTK field tests more than 95% of the position errors were estimated to be within 0.2 m. It was concluded that the GPS can be applied to selected applications in row crops and orchards if augmented by local sensors and mapping techniques. Using the GPS in a RTK setup applies to general applications where position errors of 0.2 m are acceptable.