What is RTK?
First, let’s understand what RTK really stands for! Real Time Kinematics is a GNSS technology that allows to partially remove signal errors due to propagation in the atmosphere. These errors are numerous:
- Atomic clocks biases
- Receiver’s noise
- Antenna’s phase center variation
- Troposphere propagation
- Ionosphere propagation
Ionosphere propagation is the most important effect. The ionization of the propagating medium causes reflections and refractions of the electromagnetic waves. The propagation time measurement time performed by the receiver is therefore false.
Another important effect that cannot be modeled is multipath. It corresponds to wave reflection on obstacles near the receiver (trees, buildings…) that retard or duplicate signals. It can be strongly attenuated with a good hardware.
RTK requires consequently two GNSS receivers, a “base” station, generally motionless and whose position is perfectly known, and a “rover” mobile receiver. The base sends correction data to the rover (raw data) so that the rover can compute the double-difference RTK algorithm. This means that pseudoranges and carrier phases from the base will be “substracted” (it is a bit more complicated though) from those from the rover. RTKLIB is used to perform those calculations, that can lead to a centimeter-level accuracy.
To get deeper into details, RTK uses carrier measurements in order to get centimetric. GPS signal wavelength is about 20 centimeters, so if you are able to measure the phase of this signal, that you know satellite’s phase center and that you calculate the integer number of periods between the satellite and you, this is where you get to centimetric precision. We call ambiguity the previous integer number of periods. If the algorithm finds an integer solution, then the solution is called a “fix”. This is when when maximum accuracy is reached. Otherwise, if the solution is a float, the solution is called “float”. This solution is less precise. We will refer as “single” for the positions neither “fix” nor “float” (happens if no correction data is received, or if signals are not good enough). Something really important about RTK is that if your antennas do not provide good enough signals, the computed position will be erroneous!
With SMARTNAV RTK, a square is a square !
Quick Start Guide
This Quick Start Guide will describe the easy and standard way to setup SMARTNAV RTK. Do not hesitate to read other sections to have a look at more advanced features.
RTK needs two boards :
- a motionless receiver, whose precise position is known, called base
- an embedded moving receiver, whose precise position wants to be calculated, called rover
The easiest way to power base is to use a LiPo battery on the following pins :
The corresponding regulator can handle from 10 V to 28 V, so ideally use a 3S (11.1V) or 4S (14.8V) battery.
Rover can be powered just like base, but to avoid using an additional battery in embedded platforms, several connectors can be used.
To connect SMARTNAV RTK to a Pixhawk, use the following DF13 connector :
with a straight DF13 cable, included in the package or available here. :
Then connect to GPS port :
and this is it!
If you want to connect to a Dropix, use the following JST connector :
and then connect to GPS main port.
It might happen that USB port does not provide enough power for the two boards, so make sure that your flight controller is battery powered before trying to configure SMARTNAV RTK.
First, power your base. Then, browse your WiFi networks, you should see a network called
smartnav-rtk-xxxx, “xxxx” being the last four digits of the board’s WiFi MAC address. Password is
password. Once you are connected to this network, go to your favorite navigator and type
192.168.42.1:8080. Do not forget the port 8080, otherwise you might end up in Edison’s own server.
Be careful not to change Edison’s network configuration, you might end up bricking your board!
You should get to this page.
This is RTKLIB Web Console’s Admin page.
RTKLIB Web Console
First power the board, connect WiFi and open RTKLIB Web Console Admin page.
Go to “Config” tab, select “Base” mode and then select the following parameters :
serialfor a serial connection, we will use a USB radio in this Quick Start Guide
ttyUSB0:57600:8:n:1:offmeans port “ttyUSB0”, baudrate 57600, 8 bits, no parity check, 1 stop bit, no flow control (standard settings)
1 Hzmeans that base will output solutions at a frequency of 1 Hz
Then click on “Push”, and do not forget to “Confirm”. These settings will be stored on Edison’s memory and will remain active at each boot up.
Go to “Config” tab, select “Rover” mode and leave all the parameters untouched except :
ant2-pos1is your base’s latitude, in decimal degrees
ant2-pos2is your base’s longitude, in decimal degrees
ant2-pos3is your base’s height, in meters
These are the coordinates where you project to place your base. Remember that you need the most accurate coordinates possible for these parameters! You can have a look at the section “How to calibrate your base correctly” to know how to calculate these positions automatically.
Your rover configuration is now ready and stored inside the board, you need to repeat this operation only if you change your base’s position.
Again, an “approximate” base position will still give you an excellent relative positioning between base and rover, but there might be a constant offset on your rover’s absolute position (equal to base’s positioning error). So to start, you can simply use coordinates generated by your phone or even Google Maps. Do not forget to read the corresponding section to know how to calculate precise positions.
For the datalink between your base and your rover, the easiest setup is to use two USB radios, like the ones available here.
Connect one radio to the base, using the USB port, and the other one to the rover, also using the USB port. Your datalink is now ready to go. USB radios are factory configured with standard settings, that means that they will automatically connect together. If you want to change this configuration in order to increase TX power, change communications channels, set up correction error codes, etc… please visit the corresponding section in the wiki.
Make sure your base is placed in an open sky area. The better the placement, the better the result.
If you do not have precise coordinates, then please use the automatic tool to calculate them.
Once you have completed all the previous steps, you can connect to rover to monitor solution quality. The status tab will provide you the following information :
- satellites signal (base side)
- common RTK satellites (base and rover)
- quality flag (
fixis the best possible solution,
floatis intermediate and
singlemeans no correction data is available or usable for differential correction)
- precise coordinates and height
The deviation map (Map tab) is also useful to monitor your deviation in real time. By clicking on “Refresh” you will see the 200 last outputs of the RTK system. It can used to check trajectories or to monitor static accuracy.
Your system is now ready to go, if correction data is not received for at least 10 seconds, it will output a classical GPS position, otherwise, as soon as it gets correction data back, it will switch to a precise output.
Powering the board
The board has several power supply ports:
- 5V ports on the JST or Pixhawk connectors to supply power via flight controller :
DF13 connector schematic :
JST connector schematic :
- 5V port on the board (if you power it with the FTDI for example) :
- 7 to 17V (4S) on the power pins
The board has 3 voltage regulators :
- 5V regulator from the power pins
- 4.2 V regulator for the Edison
- 3.3 V for U-Blox, USB hub, and HMC
Make sure you only you power the board through one of the previous ports. The power consumption can be quite high whenever the USB/Ethernet hub is used :
- Edison peak consumption : 600 mA (during WiFi transmission)
- USB/Ethernet Hub peak consumption : 250 mA (with Ethernet)
- U-Blox M8T peak consumption : 60 mA
Drotek RTK GNSS simplified schematics :
The LAN9512 splits the Edison’s USB port into two USB ports and one Ethernet port. This has several advantages :
- USB does not need any baudrate, this means you can set up the frequency you want to work at without worrying about the baudrate
- the additional USB port frees up a serial port, so it can be used to output the computed solution (Intel Edison has only got two serial ports, one of these, UART2 is used by the console, so it is preferable not to transmit data through it). It can be used to plug an RF link to transmit correction data, or even a 3G dongle.
- the Ethernet port allows TCP use. This way, you can configure your base as a TCP server and stream raw data through the Internet. Rovers can then connect to the base through Wifi or 3G.
In this configuration, UART1 is dedicated to output the computed solution. The multiplexor can switch between Edison’s UART1 (can deliver RTKLIB’s output) or U-Blox’s output (see Configuring U-Blox chips). If no correction data is received, RTKLIB will give a position that is not filtered, so the deviation will be quite high. In order to prevent this, if the solution is neither « fix » nor « float », the multiplexor will automatically switch to U-Blox’s output. This function also ensures a certain redundancy in case the Edison is not providing any output.
RTKLIB Web Console
Launching RTKLIB automatically
SmartNav works as a “classical” GPS. The RTK algorithm is launched automatically when Intel Edison boots. If it gets correct signal from a base station (what can be monitored by the web app) it will then compute a precise position. Otherwise it will provide a single U-Blox type position. The board is equipped with a multiplexer that selects whether Edison’s precise output or U-Blox’s direct single output.
RTKLIB Web Console is an application developed in Node/AngularJS. It runs automatically at Edison’s boot. In order to connect to the application, open your favorite web browser from your computer, tablet or phone and connect to board’s IP address at port 8080.
If the board is in Access Point mode (default mode), then type 184.108.40.206:8080 in your browser. You will get to this page.
This is the administration page, it will tell you whether base or rover mode is running or not. It also offers the possibility to download logs. Keep in mind that this a server/client architecture : the client (your web browser) retrieves data from the server (the Edison), but the code is executed on client side to avoid overloads.
BE CAREFUL not to go to 192.168.42.1 (port 80 implicit), because there is a second Web server on the Edison that allows you to change Wifi configuration. By default Edison is on Access Point mode, but if you change this to Infrastructure mode (connection to a router/network), you will potentially brick the board, as it will relentlessly try to to connect to an unknown network at startup and will not create its own network anymore.
RTKLIB works with a configuration file that contains all the information needed in order to perform RTK.
First, you need to chose whether you want to work in base or rover mode. Base mode is for streaming raw data, or logging for post-processing. You can chose to stream raw data through a serial port, a file, a TCP server or an NTRIP server. You can also set the frequency at which the base will work. 1 Hz for the base and 5 Hz for the rover is usually a good combination.
Rover mode is for performing RTK. You can find on this page the meaning of main parameters. For other parameters please refer directly to RTKLIB documentation.
The configuration is applied only once you press the “Push” button, otherwise it is ignored. You can also open or save configurations with the corresponding buttons.
RTKLIB Web Console offers several ways to monitor RTK performance. The “Status” tab will show you the quality of GNSS signals. It can help you to find a good position for the base. Remember that is highly compulsory to have a good satellite reception quality for RTK! Right side chart shows signal-to-noise ratio for the base, whereas left chart shows SNR for common satellites between base and rover.
On the top of the page you will find the quality of the solution and also rover’s position.
The Map tab is useful for monitoring the quality of the solution. It is a deviation map where you can read position variations over time.
There is also a Log tab where you can have direct access to RTKLIB logs.
Intel Edison has no internal Real Time Clock, that means that NTP server will synchronize time if board is connected to the Internet. But once you reboot the board, time synchronisation will be lost. This will result in a bad log timestamp in the Linux file system. This is not critical for performing RTK, but it can be problematic if you want to manually retrieve your logs. They are stored in :
with the following timestamp :
We have implemented a time-sync function in order to get rid of this problem :
If you click on “Sync”, time will be synchronized with GPS time. You have to wait to get GNSS signal before pushing the button. This will reset the timestamps, so make sure you start and stop the Rover service in order to get a clean repository.
Time can be checked with an SSH connection to the board and the command :
In last release, the Time Sync button has been removed. It has been replaced by a daemon that is started before any RTK service. It will wait on GNSS signal in order to get correct time. That way, all timestamps are always correct. However be careful, as RTK services depend on time synchronisation, you will not be able to change any configuration on the board from the WebConsole until you get a correct signal. The status of time synchronisation can be checked with an SSH connection and the command :
systemctl status drotek-time-sync.service
Be careful, in order to work, U-Blox has to be in default configuration mode at startup, otherwise time synchronization will fail. If you changed tyhis configuration, please revert back to default configuration.
Managing the configuration file
As you may have seen RTKLIB’s configuration file is everything except user-friendly.
The configuration files are located at
/usr/drotek/config This document with list all the relevant parameters of this configuration file.
singlefor single positioning
dgpsto use SBAS
kinematicis for RTK with fixed base
staticis for RTK with fixed base and rover
movingbaseis for RTK with both base and rover moving
fixedis for rover fixed
ppp-kinePPP algorithm in kinematic mode
ppp-staticPPP algorithm in static mode
PPP (Precise Point Positoning) differs fom RTK because it uses precise orbit data instead of double-difference algorithm in order to compute a position. Its precision is generally less good than RTK. But it can be used without base corrections and can potentially output a submeter position.
1to use only GPS satellites
+2to add SBAS
+4to add GLONASS
+8to add GALILEO
+16to add QZSS
+32to add BEIDOU
Useful when you want to disable SBAS (sometimes interacts badly with RTK) or select a constellation.
This is the strategy for integer ambiguity resolution for GPS. Continuous gives the best results. Fix-and-hold can sometimes hold the ambiguity longer, but some offsets on position can appear.
This is the strategy for integer ambiguity resolution for GLONASS. It is recommended to leave this parameter off, as it will generally not help in ambiguity resolution.
ant2-postype = base’s position type
llhlatitude/longitude/height in decimal degrees and meters
xyzECEF coordinates in meters
singleuses base’s single data to calculate a position
posfileuses a position file
rinexheaduses a RINEX file header
rtcmextracts base’s position from RTCM messages
These parameters are for setting base’s position. It must be understood that getting a good position for the base is the key to accuracy. Please follow instructions on how to calculate base’s position accurately. “Single” mode can be used (only for post-processing) if user does not want to enter base’s position manually. However position calculation will be much less precise.
serialfrom a UART link
filefrom a file
tcpsvrfrom a TCP server
tcpclifrom a TCP client
ntripclifrom a NTRIP client
This parameter sets how correction data from the base is transmitted to the Edison. For instance with a radio link it can be UART, over Wifi it can be a TCP server, etc… It is also compatible with NTRIP.
ttyUSB0:57600:8:n:1:offfor a radio link plugged on the external USB port, baudrate 57600, 8 bits, no parity check, 1 stop bit, no flow control
192.168.1.20:2424for retrieving data from a TCP server located at 192.168.1.20, port 2424
This parameters sets the path for correction data depending on
ubxU-Blox binary format for raw data
rtcm2RTCM 2 protocol
rtcm3RTCM 3 protocol
This parameter sets in what format the corrections are being sended. U-Blox receivers naturally outputs U-Blox binary format .ubx which is compact (little bandwith). This data can be converted with STR2STR to RTCM if needed. Other formats are also available if another base is used : oem4, oem3, ss2, hemis, skytraq, gw10, javad and sp3.
tcpsvrTCP server output
tcpcliTCP client output
ntripsvrNTRIP server output
With RTKLIB you can configure two outputs for the calculated solutions. UART is useful for getting the position to Pixhawk, file is also useful for avoiding post-processing.
ttyMFD1:38400:8:n:1:offttyMFD1 is UART1 on the Edison, baudrate 38400, 8 bits, no parity check, 1 stop bit, no flow control
/usr/drotek/rtklib/sol%Y%m%d%h%M.posfor saving the solution to the corresponding folder, with a time tag in the name
Paths corresponding to
llhgives the solution in ASCII format, latitude, longitude and height separated by columns
xyzsame in ECEF coordinates (Earth Centered Earth Fixed)
enusame in ENU coordinates (East, North, Up, the coordinates of the vector between base and rover)
nmeasame in NMEA
ubxthis is a functionality added by Drotek so that RTK GNSS can work with Pixhawk
U-Blox binary format has been added by Drotek in order to work with flight controllers.
This is the path for active logging folder. Then logs are moved to
/usr/drotek/logs Useful for post-processing.
To configure the Ublox chips manually you have to use the U-Center software, available here.
You also need an FTDI adaptor sold here.
Then connect the FTDI adaptor to the board. You can choose to power the board through the FTDI with the 5V pin. If you don’t, do not forget to still plug the GROUND pins together. Be careful not to apply several power supplies to the board!
U-Blox’s M8T UART has been directly connected to the “GPS RX and TX” labeled pins for configuration/debugging purposes. Keep in mind that the M8T is connected to the Edison with USB while changing configuration.
To connect Drotek GNSS RTK to U-Center, select the appropriate COM port :
In order to use the RTK algorithm, the receiver has to output raw data instead of computed navigation messages. This data contains all the pseudoranges, carrier phases, Doppler measurements etc… necessary to compute the algorithm. An example of raw data is shown below :
The messages the GPS is sending can be seen in “View -> Messages View” tab.
The configuration can be set in the “View -> Configuration View” tab.
For instance in the “GNSS” tab you can config whether you want to use GPS, GPS + GLONASS + SBAS, etc… Now GALILEO is available with firmware 3.01 for M8 series!
In the “NAV5” tab, you can set the Dynamic Model for the GPS. This useful when there is no correction data coming, so the Edison will switch to Ublox’s direct output. For example, if you are using the board with a Pixhawk, select “Airborne < 4g”, so that position computation and filtering will be closer to reality, given that drones kinematics are quite fast.
Once you do a modification in any tab, do not forget to press the “Send” button at the bottom left corner, otherwise the modification will not be sent to the receiver.
“MSG” tab contains all the messages that can be set through M8T’s outputs. The two important messages containig raw data are “02-15 RXM-RAWX” and “02-13 RXM-SFRBX”. You can activate them by selecting them on the menu and then select the output port. In our case it is important that those two messages are set to the USB port, to which the Edison is connected.
Then you can choose to send whatever message you want to the UART port, depending on what you connect to the board. For example, Pixhawk uses NAV-SOL, NAV-STATUS, NAV-POSLLH and NAV-VELNED messages. Do not forget the corresponding baudrate in the “PRT” tab (for instance 38400 for Pixhawk) :
You do not need to set any baudrate for the USB port.
The rate of the receiver is a key parameter for RTK as it will set at what frequency the solutions are calculated. This can be configured within the “RATE” tab :
SBAS settings can be changed in “SBAS” tab. In order to save his configuration inside receiver’s memory, go back to “CFG” tab, select the four devices and click on “Send”, as shown in the picture below.
RTKLIB’s main program can be found in
/usr/drotek/rtklib/rtkrcv, so first SSH into your board and then use this command :
and ./rtkrcv to launch it.
Rtkrcv is a server that needs a configuration file. The following commands can be used : -o [PATH] to specify a configuration file (stored in
/usr/drotek/config/) -t [1..5] for debugging purposes, writes a .trace file in rtkrcv’s path depending on the level of verbosity (from 1 to 5). It can be useful to understand why sometimes results are not as expected. -d [PATH] to redirect rtklib’s output to another console -s to automatically launch the server
A typical launch of
rtkrcv is :
./rtkrcv –o /usr/drotek/config/active_config.conf – t 2
solution 1 must be typed in order to start the server and visualize solutions. These may last to appear as sometimes RTK algorithm needs some time to perform initial calculations (this also depends on signal strength).
Closing an SSH connection kills the rtkrcv process, so this is why –d command may be useful.
There are three ways to access the Intel Edison :
- WiFi Access Point
- WiFi Router
We will ship the Edison in Access Point mode by default, so it can connect with the RTKLIB WEB CONSOLE easily. This is the most user-friendly way to communicate with the board. If you want to SSH into the board in Access Point mode, use the IP address 192.168.42.1 and a hyperterminal likePutty. You then get access to the embedded Yocto Linux.
Serial port is available through UART2. This port is called /dev/ttyMFD2 inside Linux. For this, you will need an FTDI adaptor sold here.
Connect the FTDI adaptor to the board. You can choose to power the board through the FTDI with the 5V pin. If you don’t, do not forget to still plug the GROUND pins together. Be careful not to apply several power supplies to the board!
Then go to your device manager to see what COM port is being used.
Then use Putty in serial mode, select the COM port created by the FTDI converter and enter 115200 for the baudrate. After pressing Enter you will be prompted to login.
If you want to connect the Edison to a router, first connect to the board using an FTDI adapter. Once you have entered your login and password, type the following command to disable Access Point Mode :
configure_edison --disableOneTimeSetup --persist
Then type :
to list all the available networks and connect to them. The command :
can give you the IP address of the board. You can then use Putty with the new IP address to connect to Linux or a program like WinSCP if you want to retrieve some data from the board. If you wish to turn back to Access Point Mode, type :
configure_edison --enableOneTimeSetup --persist
SMARTNAV RTK is equipped with multiplexors that ensure a hardware switch function. The output of the board can be selected between a U-Blox “normal” output or Edison’s “precise” output. There are two scripts located at :
that let you control these multiplexors.
mux_low is executed U-Blox direct UART output will be redirected to board’s output (JST or DF13 connectors). If
mux_high is executed Edison’s UART output will be redirected to board’s output (JST or DF13 connectors).
First to do in order to post-process data is to retrieve logs from base and rover. WinSCP is a good tool to connect to the Edison in SSH. Enter the IP adress of the board and press Connect.
Go to :
and select the files you want to download. RTKLIB automatically logs both base and rover data in this folder.
These logs only contain raw data in U-Blox binary format. It is necessary to convert them to RINEX format (Receiver INdependant EXchange format) before processing them. Inside RTKLIB you can find RTKCONV, a GUI program that will do this conversion.
First select your raw data file :
The output paths will be set automatically. Click on Options :
Check that the boxes corresponding to the satellites you want to process are checked. Then click Ok and Convert. Repeat this operationn with all your raw data files.
RTKPOST is the GUI program that will post-process RINEX files. First run RTKPOST and click on Options :
You will find in this window all the parameters corresponding to the .conf configuration file. You can either enter them manually or click on “Load” and select a configuration file.
Select on the main window the observation file corresponding to the rover (RINEX file provided by RTKCONV) :
Repeat this operation for the base :
Click on Execute. This will generate a .pos position file.
RTKPLOT is a GUI program that can plot the .pos position file generated by RTKPOST. It can also read files recorded by RTKLIB in “llh” format (See Configuration File). Open RTKPLOT and open a .pos file :
Fix positions appear in green, float in yellow and single in red. By pressing “Google Earth View” you can see the position in Google Earth View :
However be careful! In some zones Google Earth’s precision might vary from meters to several tens of meters. That means that you can sometimes see strong offsets between your real position and satellite views.
RTKPLOT is also useful to monitor other parameters, such as number of satellites, deviations, velocities, accelerations, age of differential corrections, …
How to calibrate base correctly
Canada provides a government service where you can upload raw GNSS data in order to compute precise positioning with PPP. PPP means Precise Point Positioning, it is an alternative method to RTK. Instead of calculating double-differences it uses precise orbit data iin order to calculate submetric positions.
Place your receiver on the desired point and log raw data for at least two hours (this depends on the quality of the coordinates you want to get). Then convert your raw data into RINEX format (see RTKCONV).
Then go to : http://webapp.geod.nrcan.gc.ca/geod/tools-outils/ppp.php.
Create an account an open a session. You should get to this screen :
Enter your email address, select “Static” and “ITRF”. Then upload the RINEX file. You will then receive a notification on your email address when the processing is finished.
It is often difficult to get precise base coordinates. We implemented a function that averages base’s position over time and feeds corresponding coordinates into rover’s configuration. The function is located in Admin tab (Rover mode) :
You can select a time of survey in seconds. The higher this time, the higher the precision of the coordinates. It is recommended to calculate the position over several minutes. Once the process is completed it will automatically change rover configuration aund launch rover mode. In order to work, base must be configured to send differential data in UBX mode.
Update the board
Update the board
You will find in WebConsole an Update button.
Clicking on this button will run
smartnav-update script located in
/usr/drotek/admin. This script will copy SMARTNAV-RTK repository and extract the update from the Update folder.
The update can also be done manually by running the
smartnav-update script from SSH.
An Internet connection is necessary, the easiest way to connect the board is to use an Ethernet connection as shown here.
Drotek has added some modifications to RTKLIB so its output is compatible with Dropix/Pixhawk. SMARTNAV RTK can be directly plugged to Pixhawk’s GPS port using a DF13 cable (included in our package, otherwise here).
Configuration for rover :
“ubx” type has been added by Drotek, code is available in our GitHub here. Port ttyMFD1 is dedicated to serial output, it is multiplexed with U-Blox UART output, so the system can also work as a “classical” GPS. This way, whenever corrections from a base are available, a precise position is computed. Otherwise, the Edison is completely bypassed.
Pixhawk/Dropix work at 5 Hz (this parameter sets the frequency at which the RTK solutions will be calculated) and at a baudrate of 38400 (important for multiplexing) :
Be aware that your flight controller might not configured to react to such precision. You might need to tune your PIDs for that. Generally increasing I and P helps reducing static error, but this has to be done very gently in order to avoid instabilities.
You might also work on other parameters such as :
INAV_TC_XY: time constant for GPS and inertial measurements mixing
EKF_POS: Kalman filter parameters for position estimation
EKF_VEL: Kalman filter parameters for velocity estimation
It might happen that when base signal is lost or recovered GPS error is triggered. This is because flight controller will see a sudden drop in number of satellites, a sudden change in HDOP or a position offset. It is completely harmless as positions will still be output from the board, either from the Edison or from U-Blox chip.
Differential data from base station can be encapsulated in MAVLink protocol to avoid using two separate links between GCS and the UAV. First, base is configured for TCP server function that streams raw data on port 2424. Base can also be connected to GCS with a UART/USB converter.
The computer running Mission Planner must then be connected to base’s Wifi network. Connect your Pixhawk/Dropix to SMARTNAV (with DF13 or JST only) as usual, using the telemetry. Once connected, press Ctrl + F and select the Inject GPS function.
Then select TCP Client and click Connect :
Enter the IP adress (192.168.42.1 if connected to SMARTNAV’s Access Point) :
And then port number (2424 in this example) :
This function will forward differential data to flight controller’s GPS TX port. In SMARTNAV 1.2.6, this port is directly multiplexed to the Edison (in previous versions, multiplexors are controlled by one GPIO only, so when the code switches to “classical” mode, differential data is no longer received by the Edison. However this issue can be solved by changing the cable). That means that all corrections will pass exclusively through DF13 or JST cables, without the necessity of adding another datalink or cable.
SMARTNAV is configured to receive data from the USB port by default. So the paramater
inpstr2-path needs to be changed in rover’s WebConsole :
MFD1 is Edison’s UART1 (the one connected to DF13 and JST) and the baudrate of 38400 must correspond to
outstr1-path (baudrate at which flight controller receives GPS data). Once everything is set correctly you should see the DGPS flag in the HUD :
This has been achieved with ArduCopter 3.4.
Flight controllers use
UBX-NAV-SOL messages in order to get position from the GPS. Position is encoded in 4 bytes, that means that maximum resolution can be up to 7 decimals in latitude/longitude and up to millimeters in height.
As shown in the picture above, this means that globally U-Blox protocol resolution is centimetric.