Vol.:(0123456789) GPS Solutions (2025) 29:171 https://doi.org/10.1007/s10291-025-01927-4 SOFT WARE INSTINCT: a flow‑based open‑source PNT framework for satellite navigation and sensor fusion Thomas Topp1  · Marcel Maier1  · Thomas Hobiger1  · Doris Becker1 Received: 5 February 2025 / Accepted: 1 July 2025 © The Author(s) 2025 Abstract INS toolkit for integrated navigation concepts and training (INSTINCT) is an open-source positioning, navigation and tim- ing (PNT) framework for global navigation satellite system (GNSS) navigation and sensor fusion written in C++. It uses flow-based programming to encapsulate functionality, enforce clean interfaces and promote reusability. Not only multi- constellation, multi-frequency single point positioning (SPP) and real-time kinematic positioning (RTK) algorithms are available, but also inertial navigation system (INS)/GNSS sensor fusion. Moreover, innovative concepts like multi inertial measurement unit (IMU) arrays and factor graph optimization are featured. Furthermore, most file formats common in the PNT field can be read with the software and converted between them. Also, simulation of trajectories and IMU data with different error models is possible. A graphical user interface allows the user to directly set parameters and analyze results in plots, which enables rapid prototyping and testing. A developer can easily extend the functionality with own algorithms and sensor interfaces building upon the existing modules. In order to evaluate the performance of the algorithms two experi- ments were performed. Analysis of a static dataset shows that the position accuracy of the RTK algorithm of INSTINCT is comparable to RTKLIB. Additionally, a dynamic dataset was generated using a Spirent GNSS simulator and INSTINCT’s IMU simulation capabilities. In-depth assessment confirms the high accuracy of the results and demonstrates that the INS/ GNSS loosely coupled Kalman filter can compensate for GNSS outages. Keywords Multi global navigation satellite system (GNSS) · Flow-based programming · Open source · Real-time kinematic (RTK) · Inertial measurement unit (IMU) · Sensor fusion Introduction Writing navigation software becomes a more and more chal- lenging task. In the early days of satellite navigation it was sufficient to have a dedicated software to process single- frequency global positioning system (GPS) measurements in a single point positioning (SPP) mode. However, since the release of the open-source software RTKLIB (Takasu and Yasuda 2009), any successive software is expected to have at least real-time kinematic positioning (RTK), multi- frequency, and multi-constellation capabilities. There have been numerous adaptions, e.g. by Pany et al. (2019), Ever- ett and Reimann (2016), Fredeluces (2024). Yet, extending global navigation satellite system (GNSS) software which was never meant to be extendable has its limitations that start to surface when incorporating different sensors like inertial measurement units (IMUs) for sensor fusion purposes. Therefore, in this paper a new open-source positioning, navigation and timing (PNT) software framework called INS toolkit for integrated navigation concepts and training (INSTINCT) is introduced which has been built from the ground up with the intent to be modular, extendable and usable by non-navigation experts or researchers without a software development background. It is written in modern C++, runs on Linux, Windows and macOS, and provides the user a graphical user interface GUI. Moreover, the soft- ware can even be executed on a single-board computer like * Thomas Topp thomas.topp@ins.uni-stuttgart.de Marcel Maier marcel.maier@ins.uni-stuttgart.de Thomas Hobiger thomas.hobiger@ins.uni-stuttgart.de Doris Becker doris.becker@ins.uni-stuttgart.de 1 Institute of Navigation, University of Stuttgart, Stuttgart, Germany https://orcid.org/0000-0001-9251-2342 https://orcid.org/0009-0003-2793-4719 https://orcid.org/0000-0003-3116-2742 https://orcid.org/0009-0005-7961-8384 http://crossmark.crossref.org/dialog/?doi=10.1007/s10291-025-01927-4&domain=pdf GPS Solutions (2025) 29:171 171 Page 2 of 10 a Raspberry Pi without a GUI in headless mode to provide real-time navigation solutions on test platforms. This paper first gives an overview of the INSTINCT software, describes its underlying programming paradigm, flow-based programming (FBP), and then provides insights on its functions, including more detailed descriptions of GNSS processing with RTK, multi IMU (MIMU) sensor fusion, reading and converting of different file formats like UBX and RINEX, and lastly analyzing and plotting data directly in the software. Afterward, the performance of the algorithms is evaluated with two datasets. First with static data from rooftop antennas, then with a simulated dynamic dataset using a Spirent GNSS simulator and INSTINCTs IMU simulation capabilities. Finally, a summary and outlook are given. INSTINCT software framework Flow‑based programming INSTINCT is a flow-based PNT software. FBP was intro- duced by Morrison and IBM (1971) and Morrison (1994), and its PNT application was described in more detail by Topp and Hobiger (2022). Essentially it means that functionality, like reading a file or processing data, gets abstracted into so-called nodes, which then communicate with a predefined message content via links between the nodes’ input and output pins. This principle can be better understood by looking at Fig. 1, which shows the GUI of INSTINCT. The figure displays 15 nodes in total with two algorithm nodes at their center, the RTK—real-time kin- ematic and INS/GNSS LCKF nodes. The algorithms get their respective input data from different sources connected through links. The RTK node, for instance, needs GNSS observation data from a rover and base receiver. In the depicted flow the base and rover files are RINEX files and the data is passed with the message type GnssObs. Forcing nodes to communicate through certain types has the advan- tage that nodes can be exchanged. For example, the GnssObs message type is also provided by the UBX file reader node. Furthermore, by exchanging the input with a u-blox sensor node instead, a whole flow can be transformed from post- processing into a real-time application. inertial navigation system. Another advantage of this flow-based approach is that each node only operates on its input data and therefore as long as it has input data available in its queue one node can act completely independent of others. This design allows the software to execute each node in its own thread, ena- bling low-level parallelization of tasks. As demonstarted by Topp and Hobiger (2022), this approach yields performance Fig. 1 Graphical user interface of INSTINCT depicting an INS/RTK–GNSS loosely-coupled sensor fusion. A detailed description of the GUI and each node can be found in the online documentation hosted on GitHub (Topp et al. 2022) GPS Solutions (2025) 29:171 Page 3 of 10 171 improvements in most scenarios. In order to do this low- level parallelization, the nodes with multiple input pins have to synchronize their input data. This works differently in post-processing and real-time scenarios. In general, every data package passed over the links needs an absolute times- tamp. Usually, GPS time is used and has to be included in all data files. While being important for time sorting of the messages, this poses a challenge for sensors which do not output an absolute time, like most IMUs. To obtain IMU measurements with absolute timestamps, the IMUs must be synchronized to a reference, such as a GNSS pulse-per- second (PPS) signal. This is typically achieved by connect- ing the PPS signal directly to the IMU, which then reports the time elapsed since the last synchronization pulse. This elapsed time can subsequently be converted into an absolute timestamp. Such a sync logic is already implemented for nearly all IMUs supported by INSTINCT. With all data time tagged, in post-processing a node then waits until it gets data on all its input pins before it starts processing the earliest data package. If two data packages, for example from two or more GNSS receivers, have the same timestamp, then the processing node internally has an input pin priority which dictates in what order the data is processed. In real-time applications, this is not a feasible strategy. Waiting until all input pins have data would mean that, for instance, the INS/GNSS LCKF node in Fig. 1 has to wait for ImuObs and PosVel data before processing. If sensors were connected instead of the file readers and the GNSS receiver (which provides measurements to the RTK—real-time kin- ematic node) would output at 1Hz while the IMU operated at 100Hz , the loosely coupled Kalman filter (LCKF) node would accumulate all incoming IMU data in its input pin queue until a new position estimate becomes available, thus, throttling down the LCKF to a 1Hz output rate. Therefore, in real-time processing the requirement for all input pins to have data is lifted. This comes at the cost, that messages can arrive out-of-order depending on how long processing in the previous nodes took. Thus, the processing order must be handled manually in the node. For the INS/GNSS LCKF node, this requires reverting the Kalman filter to a previous state and then batch-processing all measurements in the cor- rect chronological order. Functions Various nodes are already implemented in INSTINCT pro- viding a solid foundation for navigation applications. To read and write data to disk, many file formats, which are commonly used in the PNT field, are implemented. A list of all supported formats is given in Table 1. However, for real-time applications, sensor interfaces are needed. Cur- rently, INSTINCT features nodes for several sensors of dif- ferent manufacturers. Some, like the VectorNav IMU/GNSS (VectorNav 2024) node, allow full configuration of all sensor settings and logging of CSV and binary data. Others, like the u-blox (u-blox 2023), navio2 (HiPi Industries 2022), emlid Reach (Emlid 2019), and KVH FOG (KVH 2022) node can only receive and decode data from a pre-configured sensor. Apart from reading files and interfacing sensors, INSTINCT can be used to simulate trajectories and IMU measurements. This is done by the ImuSimulator node depicted in Fig. 1. Not only fixed, linear motion, circu- lar and rose shaped trajectories are supported, but also trajectories defined by the user in the form of CSV files. The trajectories are represented using splines and sensor measurements are calculated utilizing their derivatives. A more detailed description of the algorithm is given in Topp and Hobiger (2022). Alternatively, another source of simu- lated IMU measurements can be the IMU plug-in (Safran 2020) for the Skydel GNSS simulator which can send its data over a network stream to INSTINCT. In order to simulate real sensors, error models are needed. These sto- chastic signals are applied inside the ErrorModel node, also shown in Fig. 1. In the figure, the ImuObs data type is connected, and therefore the node will be able to simulate biases, white noise, random walk and integrated random Table 1 Supported file formats and their usage inside the INSTINCT software Format Description ANTEX (IGS 2010) Reading of antenna phase center offset (PCO) and phase center variation (PCV) CSV Logging/reading of sensor data and results from INSTINCT Emlid reach binary (ERB) (Emlid 2020) Decoding of VER, POS, STAT, DPOS, VEL, SVI and RTK messages KML (Open Geospatial Consortium 2008) Writing of position solutions to visualize in Google Earth NMEA (NMEA 2023) Decoding of GGA, RMC, ZDA Positioning solution file (Takasu 2013) Reading of all data fields RINEX (IGS 2021) Obs: 3.02, 3.03, 3.04 reading; 3.04 writing Nav: 2.xx, 3.xx, 4.00 reading u-blox UBX (u-blox 2023) Decoding of UBX messages including RXM-RAWX and RXM-SFRBX ULog (PX4 2024) Reading of Pixhawk IMU data GPS Solutions (2025) 29:171 171 Page 4 of 10 walk processes on the accelerometer and gyroscope data. However, the ErrorModel node can also be connected to PosVelAtt pins, adding noise and biases to position, veloc- ity and attitude data, or it can be connected to the GnssObs type where not only noise for pseudorange, carrier and Doppler measurements can be added, but also artificial ambiguities and cycle-slips can be simulated. For processing GNSS data of a single receiver or for a baseline setup with two receivers, INSTINCT has several nodes. Firstly, the data can be analyzed in the GnssAna- lyzer node, which can create signal combinations and plot these. Furthermore, it has an integrated cycle-slip detec- tor based on polynomial fits of single or dual-frequency combinations. Secondly, at the moment GNSS-based positioning can be performed using the SPP—the sin- gle point positioning and the RTK—real-time kinematic nodes. The SPP algorithm can be executed as a weighted least squares or Kalman filter algorithm while the RTK node provides a Kalman filter based implementation. Both nodes support GPS, GALILEO, GLONASS, Quasi-Zenith Satellite System (QZSS) and BEIDOU and all frequen- cies are usable. To compensate for atmospheric errors, INSTINCT implements the Klobuchar (Klobuchar 1987) model for ionosphere corrections and for troposphere cor- rections it implements the Saastamoinen (Saastamoinen 1973), GPT2 (Böhm 2015) and GPT3 (Landskron and Böhm 2018) models. As troposphere mapping functions, Cosecant, global mapping functions (GMF) (Boehm and Niell 2006), Niell mapping functions NMF (Niell 1996) and Vienna mapping functions (VMF) (Boehm and Schuh 2004) are available. The RTK algorithm can handle base- line lengths of up to about 20 km but could potentially support much longer baselines when advanced correction models are used. Further details on the algorithms can be found in the online documentation of INSTINCT (Topp et al. 2022). For processing IMU data, INSTINCT provides an ImuIn- tegrator and an INS/GNSS LCKF node which both integrate raw measurements by applying different gravitation models like WGS84 (Sandwell 2002), Somigliana (Groves 2013) or EGM96 (Lemoine et al. 1998) in either local navigation frame or Earth-centered Earth-fixed (ECEF) coordinates. The INS/GNSS LCKF node fuses the inertial navigation system (INS) position solution with a position estimate from GNSS. However, since the node accepts input of the PosVel data type, the FBP infrastructure allows it to receive updates from any node that provides this type. For example, there is also a WiFi- Positioning node (Lintz 2024) which can serve as an alter- native or additional source. Moreover, the INS/GNSS LCKF node can process barometric height measurements to stabilize the vertical position component during GNSS outages. More detail on this node can be found in Topp and Hobiger (2022). For low-cost applications, multiple IMUs can be fused with the ImuFusion node, which is described in a separate section below. Lastly, INSTINCT offers utility nodes to solve a wide range of tasks. E.g. the UdpSend and UdpRecv nodes establish a data link between a ground station and a rover and can transmit raw data or calculated position solutions in real-time. Probably one of the most powerful nodes in INSTINCT is the Plot node, which allows plotting of all data directly inside the software. This node works especially well together with the Combiner node, also depicted in Fig. 1, which can take any data inside the software and calculate algebraic combinations, such as dif- ferences between estimates and nominal values. The incoming data can even have different data rates as the node handles interpolating by itself. Real‑time kinematic positioning The RTK—real-time kinematic node depicted in Fig. 1 offers the most precise position solution of all GNSS-based algo- rithms currently available in INSTINCT. Algorithm 1 con- tains pseudocode of the implementation which is based on a Kalman filter. In line 3, the Kalman filter performs a time update, predicting the position state using a constant velocity motion model. Line 4 describes the filtering of the observa- tions based on criteria such as selected satellite systems, signal frequencies, elevation mask, and signal-to-noise ratio (SNR). Subsequently, in line 5, the estimated observations are com- puted for each measurement using the pseudorange, carrier- phase and Doppler observation equations (Teunissen and Montenbruck 2017). This is followed by cycle slip detection, pivot satellite selection, and the management of ambiguities within the state vector. The loop (cf. line 9) covers the calcu- lation of double differences and measurement innovations �z and performs a normalized innovation squared (NIS) outlier check (Dingler 2022). If the check is successful, the loop ter- minates. Otherwise, based on the values of �z , either a pivot satellite is flagged as faulty or the observation with the largest residual is removed. The loop continues until no more outliers are detected, a predefined maximum number of outliers has been removed, or no further observables remain. This iterative process introduces nonlinearity into the overall computation time. In line 20, the Kalman filter performs a measurement update using the remaining observations. If possible, the ambi- guities are then resolved to integer values before the result is transmitted via the node s output pin. The Kalman filter state vector is given in ECEF coordinates as where rr is the position of the rover, vr is the velocity of the rover and Nx br is the double differenced carrier-phase ambiguity for each signal relative to its pivot satellite (1)xe = [ rr vr N1 br N2 br N3 br … Nm br ] GPS Solutions (2025) 29:171 Page 5 of 10 171 ambiguity. The integer ambiguities are fixed by using either the Continuous or Fix and Hold strategy and utilizes the LAMBDA (Teunissen 1993) or MLAMBDA (Chang et al. 2005) search algorithms. The complete mathematical algo- rithm documentation can be found in the online documenta- tion (Topp et al. 2022). Algorithm 1 RTK algorithm in INSTINCT Multi IMU fusion INSTINCT allows the fusion of multiple IMUs to one vir- tual IMU (VIMU) to improve the redundancy and the pre- cision of an inertial navigation solution. A Kalman filter merges the measurements of an arbitrary number of single IMUs (SIMUs) which are strapped onto the same platform. The SIMUs can be unsynchronized and do not have to be available at all times, since each measurement is processed separately. The output of the MIMU fusion filter is a VIMU measurement in the format of an ImuObs that can be used in further processing like it would have been provided from a SIMU. The implemented algorithm is based on the VIMU con- cept as described by Bancroft and Lachapelle (2011). It models both angular rate and specific force as integrated random walk processes and additionally considers relative biases between each SIMU and a reference SIMU (Maier et al. 2023, 2025). This yields the state vector of the MIMU fusion with the angular rate � , angular acceleration � , specific force f , jerk j and the relative biases The relative biases of the angular rate b � and specific force bf in Eq.  (3) are three-dimensional vectors that express each SIMU’s biases with respect to those of the pivot SIMU denoted with index 1. For example, b �,21 describes the three- dimensional angular rate’s relative biases of the second SIMU with respect to the pivot SIMU. The size of the state vector therefore scales with the number n of SIMUs. The measurements zSIMU,i = [ �measured,i fmeasured,i ]T can be provided by any SIMU to be considered in the measurement equation zSIMU,i = Hi ⋅ x b IMU-fusion with the design matrix The matrices Ci in the left part of Hi are direction cosine matrices to consider each SIMU’s mounting angles. The right part of Hi only consists of zero matrices, except for one pair of three-dimensional identity matrices, which relate the latest measurement from the ith SIMU to its corresponding pair of relative biases b �,i1 and bf ,i1 . Therefore, Eq. (4) gets adapted for every incoming measurement, depending on its source. Note, that this model is resilient with regard to the loss of a SIMU. Figure 2 shows the ImuFusion node that takes meas- urements from multiple SIMUs as an input and outputs a VIMU measurement and the respective relative biases. Such a MIMU with five SIMUs was built in-house as depicted in Fig. 3. The computational cost of this approach scales with the number of SIMUs and their respective data rates. Therefore, (2)xb IMU-fusion = [ � � f j b ]T (3) b = [ b �,21 bf ,21 b �,31 bf ,31 … b �,n1 bf ,n1 ]T . (4) Hi = [ Ci 0 0 0 0∕I 0 0∕I 0 … 0 0 Ci 0 0 0∕I 0 0∕I … ] . Fig. 2 Flow fusing five SIMU measurements from a MIMU built in-house to one VIMU measurement and estimating relative biases between each SIMU and the pivot SIMU GPS Solutions (2025) 29:171 171 Page 6 of 10 the used platform sets an upper limit on the maximum num- ber of SIMUs. In tests, where five SIMUs were fused on a Raspberry Pi 4, it was possible to calculate the fused solution in real-time. In these tests, the filter’s solution was stable at all times. Since this approach estimates relative biases indi- vidually for each SIMU, it is not expected that the number of SIMUs has an impact on the filter’s stability. UBX–RINEX converter The flow-based design of INSTINCT allows chaining function- ality together. To process UBX data, INSTINCT has one node for reading UBX files and one for converting the output into the common GnssObs type. This is usually connected to one of the positioning algorithm nodes. In addition, there is also a RinexObsLogger node, which can be connected as shown in Fig. 4 to create a UBX–RINEX converter. INSTINCT can, therefore, be used as an alternative to the ‘convbin’ tool of RTKLIB (Takasu 2013) to convert UBX files. Plot node The Plot node is an important part of INSTINCT. The con- figuration window of the node is shown in Fig. 5. On the left there is a list of available input data, in this example output from the RTK node. Elements can be dragged into the plot on the right to display them. Everything in the plot window, like texts and line widths, is configurable. This allows fast and appealing visualization of data. As depicted in the figure, error bounds with user-defined significance levels can also be dis- played as a shaded area. Red crosses in plots are highlighting data where events occurred. In case of the RTK node, events are, amongst others, pivot changes or outlier detections and exclusions. These events can be hovered with the mouse to get a description inside a tooltip. Furthermore, any data point can be hovered while holding a modifier key to get more detailed information like satellites and observables used at this epoch. This feature allows an epoch-wise in-depth analysis in order to gain a deeper understanding of the interplay between the implemented algorithms and the processed data. Two more features of the plot node, not shown here in the paper, are to select what data to plot on the horizontal axis and also to overlay a line with a dynamic colormap. This can be used to show a horizontal position plot which is colored by the RTK solution status (fix, float, single) which looks similar to the default plot of the software RTKLIB. Experiments and results Static antenna In order to validate the positioning performance of the INSTINCT RTK algorithm a static dataset from two roof- top antennas in Stuttgart, Germany with a baseline length of a few hundred meters is selected. The data was recorded starting on November 4th, 2024 00:00 GPST with two Trim- ble Alloy GNSS receivers (Trimble 2018) at a data rate of 1Hz and spans 3 days. As the exact location of the rover antenna is only known through RTK, instead of analyzing the accuracy of the position solution, the standard devia- tion with respect to mean of INSTINCT is compared to rtklibexplorer RTKLIB b34k (Everett and Reimann 2016) in Fig. 6. Multiple runs were performed while varying the elevation mask and therefore reducing the number of visible Fig. 3 MIMU array built in-house, which consists of five SIMUs Fig. 4 Flow converting a UBX file into a RINEX observation file Fig. 5 GUI window of the Plot node showing RTK altitude data with a one sigma bound in blue and nominal data in orange. Red crosses on the RTK data indicate hoverable events GPS Solutions (2025) 29:171 Page 7 of 10 171 satellites. Despite having the same settings listed in Table 2, INSTINCT outperforms RTKLIB slightly in all cases in terms of scattering. In general, the differences between the two solutions are not statistically significant. Dynamic simulation For the second dataset, a trajectory in the form of a rose curve was simulated with INSTINCT as depicted in Figs. 7 and 8. Additionally to this trajectory, a static phase of 500 s at the start point and a ramp up phase of 100 s from the start to North/South zero were added. A Spirent GSS9000 (Spirent 2008) was used to simulate GNSS signals for the trajectory starting on August 1st, 2024 10:00 GPST. Similar to the static dataset, GPS and GALILEO were simulated on L1, L2 and L5 frequencies while the atmosphere was simulated with Saastamoinen and Klobuchar models. The base station was simulated at the trajectory center in Stutt- gart, Germany with a height of 300m . The generated signals were recorded using a Septentrio PolaRx5TR (Septentrio 2016) GNSS receiver. The INSTINCT flow used for pro- cessing can be seen in Fig. 1. In addition to GNSS input data, INSTINCT is used to simulate IMU data with a meas- urement noise of a tactical grade IMU (i.e. accelerometer noise density of 0.04mg∕ √ Hz and gyroscope noise density of 5◦∕h∕ √ Hz ). Furthermore, an accelerometer bias ran- dom walk of 10 μg∕ √ s and gyroscope bias random walk of 0.4◦∕h∕ √ s were simulated. Lastly, a GNSS outage of 1 min was simulated which is highlighted in Figs. 7 and 8. Figure 9 shows the position deviation of the RTK and INS/GNSS LCKF algorithms. The RTK solution takes approximately 15 s until all ambiguities are fixed. After- ward, the deviation to the simulated trajectory is within a few millimeters. As the RTK solution is assumed to have a measurement precision of 3mm the LCKF strongly relies on this measurement type and thus the LCKF solution is close to the RTK solution. The GNSS outage starts 2160 s after the start of the simu- lation. As no more position updates are possible, the position of the LCKF deviates, which is expected since the position is based on double integrated IMU measurements and tiny errors at the start of the outage increase rapidly over time. Furthermore, the 3 − � position uncertainty of the Kalman filter state is depicted with a shaded color. During the out- age also these formal errors grow, which indicates that the true error is bounded by its formal error. In summary, it can be stated that the LCKF can bridge the outage. Another advantage compared to a GNSS-only solution is that the Table 2 Relevant settings used for processing of the static dataset inside RTKLIB and INSTINCT Setting Value Used systems GPS and GALILEO Used frequencies L1 + L2/E5b + L5/E5a Elevation mask {5◦k ∣ k ∈ [0… 7]} Troposphere correction Saastamoinen Ionosphere correction Klobuchar Positioning mode (filter) Kinematic (forward) Receiver velocity noise 10−3 m∕s √ s Fig. 6 Empirical standard deviation with respect to mean in North, East and Down directions of the RTK algorithm of INSTINCT in comparison to RTKLIB processing 3 days of static rooftop data with different elevation masks Fig. 7 Simulated trajectory of the dynamic dataset. The trajectory is passed counter-clockwise (CCW) from the start. At the center of the trajectory the direction changes to clockwise (CW). At the second pass of the center the direction changes again to CCW. The colormap shows the altitude and also highlights the directional change at the center. The GNSS outage is displayed with a dashed line GPS Solutions (2025) 29:171 171 Page 8 of 10 navigation solution is available at the IMU’s data rate, which is significantly higher than the GNSS’s. Moreover, attitude, respectively flight angles, can be estimated as well. Summary and outlook In this paper the software framework INSTINCT is intro- duced. Results of its implemented RTK algorithms are at least comparable to RTKLIB which is often used as a refer- ence in the GNSS field. However, INSTINCT offers far more than just GNSS algorithms. The second dataset shows how IMU data can be simulated, integrated and fused together with GNSS. INSTINCT’s major advantage over existing PNT software is its adaptability. By selecting different nodes, a totally different processing logic can be imple- mented. File conversion, data inspection, analysis, sensor augmentation, novel algorithm development, and convenient plotting and data export are just a few features that demon- strate INSTINCT’s capabilities. All of this can be achieved by the user without writing source code or dedicated scripts. The GUI allows even non-experts to handle complex PNT scenarios while achieving high precision and accuracy. Future development of INSTINCT will focus on more advanced algorithms. Precise point positioning (PPP) and tightly-coupled INS/GNSS sensor fusion are currently implemented and tested. Additionally, Wang et al. (2023) implemented an adaptive Kalman filter solution, which is currently undergoing further tests before it will be included in the release version of INSTINCT. Moreover, a factor graph optimization (FGO) algorithm (Dellaert and Kaess 2006; Thrun and Montemerlo 2006) is currently being evalu- ated as a complementary dynamic filtering approach, offer- ing improved robustness (Topp et al. 2025). Owing to the flexibility of FGO in accommodating diverse sensor inputs and the modularity provided by INSTINCT s FBP frame- work, the FGO node will be interchangeable with existing components such as the SPP—single point positioning, RTK—real-time kinematic and INS/GNSS LCKF nodes. Furthermore, it will support tightly-coupled INS/GNSS and INS/RTK GNSS integration. Updates and new releases will be shared on the repository on GitHub (Topp et al. 2022). Acknowledgements This work was financially supported by Bundesministerium für Wirtschaft und Klimaschutz (BMWK)/ Deutsches Zentrum für Luft- und Raumfahrt (DLR) LuFo VI project CNS-ALPHA (Funding No. 20V1904B) and partly funded by the Fig. 8 Simulated flight angels and altitude of the dynamic dataset. The gray area indicates the simulated GNSS outage Fig. 9 Position deviation from the nominal trajectory of the RTK and LCKF algorithms in North/South, East/West and Up/Down direc- tions. Shaded color depicts the 3 − � bound of the LCKF Kalman fil- ter position state uncertainty. The right figures are zoomed into the GNSS outage starting at 2160 s GPS Solutions (2025) 29:171 Page 9 of 10 171 Deutsche Forschungsgemeinschaft (DFG, German Research Founda- tion)—465090690. The Spirent Academia Program played an integral part in simulating data during development of INSTINCT and for the results of this paper. Author contributions T.T. invented the software INSTINCT, developed its core and wrote most of the manuscript. M.M. developed and wrote the manuscript about the multi IMU fusion. T.H. and D.B. acted as advisors. All authors performed the manuscript review and revision. Funding Open Access funding enabled and organized by Projekt DEAL. Data availability The source code and user manual of INSTINCT can be found on GitHub at https:// github. com/ UniSt uttga rt- INS/ INSTI NCT. The data used for this paper can be found at https:// doi. org/ 10. 18419/ DARUS- 4735. Declarations Conflict of interest The authors declare no competing interests. Ethics approval and consent to participate Not applicable. Consent for publication All authors have reviewed and consented to the publication of the article. Open Access This article is licensed under a Creative Commons Attri- bution 4.0 International License, which permits use, sharing, adapta- tion, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article’s Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article’s Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/. References Bancroft JB, Lachapelle G (2011) Data fusion algorithms for multiple inertial measurement units. Sensors 11(7):6771–6798. https:// doi. org/ 10. 3390/ s1107 06771 Boehm J, Niell AE et al (2006) Global mapping function (GMF): a new empirical mapping function based on numerical weather model data. Geophys Res Lett 33:L025546. https:// doi. org/ 10. 1029/ 2005G L0255 46 Boehm J, Schuh H (2004) Vienna mapping functions in VLBI analyses. Geophys Res Lett 31:L018984. https:// doi. org/ 10. 1029/ 2003G L0189 84 Böhm J et al (2015) Development of an improved empirical model for slant delays in the troposphere (GPT2w). GPS Solut 19:433–441. https:// doi. org/ 10. 1007/ s10291- 014- 0403-7 Chang XW, Yang X, Zhou T (2005) MLAMBDA: a modified LAMBDA method for integer least-squares estimation. J Geod 79:552–565. https:// doi. org/ 10. 1007/ s00190- 005- 0004-x Dellaert F, Kaess M (2006) Square root SAM: simultaneous locali- zation and mapping via square root information smoothing. Int J Robot Res 25(12):1181–1203. https:// doi. org/ 10. 1177/ 02783 64906 072768 Dingler S (2022) Normalized innovation squared (NIS). Kalman fil- ter for professionals. https:// kalman- filter. com/ norma lized- innov ation- squar ed. Accessed 12 Nov 2024 Emlid (2019) Emlid Reach M2. Product homepage. https:// emlid. com/ reach. Accessed 5 Nov 2024 Emlid (2020) Emlid reach binary (ERB) protocol—version 0.1.0-V7. https:// files. emlid. com/ erb/ ERB-0. 1.0- v7. pdf. Accessed 28 Oct 2024 Everett T, Reimann J (2016) rtklibexplorer RTKLIB. https:// github. com/ rtkli bexpl orer/ RTKLIB. Accessed 5 Jan 2024 Fredeluces E et al (2024) Modified RTK–GNSS for challenging envi- ronments. Sensors 24(9):2712. https:// doi. org/ 10. 3390/ s2409 2712 Groves PD (2013) Principles of GNSS, inertial, and multi-sensor inte- grated navigation systems. Artech House GNSS Library, London HiPi Industries (2022) Navio2—autopilot HAT for Raspberry Pi. Prod- uct homepage. https:// navio2. hipi. io. Accessed 5 Nov 2024 IGS (2010) ANTEX: the antenna exchange format, version 1.4. https:// files. igs. org/ pub/ data/ format/ antex 14. txt. Accessed 21 Oct 2024 IGS (2021) RINEX: The receiver independent exchange format, ver- sion 4.00. https:// files. igs. org/ pub/ data/ format/ rinex_4. 00. pdf. Accessed 21 Apr 2022 Klobuchar J (1987) Ionospheric time-delay algorithm for single- frequency GPS users. IEEE Trans Aerosp Electron Syst AES– 23(3):325–331. https:// doi. org/ 10. 1109/ TAES. 1987. 310829 KVH (2022) Fiber optic gyros (FOGs). Product homepage. https:// www. kvh. com/ fog- and- inert ial- syste ms/ fiber- optic- gyros. Accessed 29 June 2022 Landskron D, Böhm J (2018) VMF3/GPT3: refined discrete and empir- ical troposphere mapping functions. J Geod 92:349–360. https:// doi. org/ 10. 1007/ s00190- 017- 1066-2 Lemoine FG et al (1998) The development of the Joint NASA GSFC and the National Imagery and Mapping Agency (NIMA) geo- potential model EGM96. https:// ntrs. nasa. gov/ citat ions/ 19980 218814. Accessed 29 Jan 2025 Lintz R (2024) Implementierung und Validierung eines Wi-Fi-Positio- nierungssystems auf Basis des IEEE 802.11mc Standards. Master thesis. Institute of Navigation, University of Stuttgart, Germany Maier M, Hobiger T et al (2023) Resilient navigation through a novel fusion approach for multiple inertial measurement units. In: Euro- pean navigation conference presentation (ESA ESTEC), Noord- wijk, Netherlands Maier M, Klink D et al (2025) A resilient navigation system for autono- mous urban air mobility using low-cost hardware. In: European navigation conference presentation 2025, Wrocław, Poland Morrison JP (1994) Flow-based programming: a new approach to application development. Van Nostrand Reinhold, New York Morrison JP, IBM (1971) Data responsive modular, interleaved task programming system. IBM Tech Discl Bull 13(8):2425–2426. https:// jpaulm. github. io/ fbp/ 0084- Ex% 201135% 20-% 20Mor rison. pdf Niell AE (1996) Global mapping functions for the atmosphere delay at radio wavelengths. J Geophys Res 101(B2):3227–3246. https:// doi. org/ 10. 1029/ 95JB0 3048 NMEA (2023) NMEA 0183, version 4.30. https:// www. nmea. org/ nmea- 0183. html. Accessed 28 Oct 2024 Open Geospatial Consortium (2008) KML—keyhole markup language, version 2.2. https:// devel opers. google. com/ kml/ docum entat ion/ kmlre feren ce. Accessed 28 Oct 2024 Pany T et al (2019) The multi-sensor navigation analysis tool (MuS- NAT)—architecture, LiDAR, GPU/CPU GNSS signal processing. In: Proceedings of the 32nd international technical meeting of the satellite division of the Institute of Navigation (ION GNSS+ 2019), Miami, FL, USA, pp 4087–4115. https:// doi. org/ 10. 33012/ 2019. 17128 https://github.com/UniStuttgart-INS/INSTINCT https://github.com/UniStuttgart-INS/INSTINCT https://doi.org/10.18419/DARUS-4735 https://doi.org/10.18419/DARUS-4735 http://creativecommons.org/licenses/by/4.0/ https://doi.org/10.3390/s110706771 https://doi.org/10.3390/s110706771 https://doi.org/10.1029/2005GL025546 https://doi.org/10.1029/2005GL025546 https://doi.org/10.1029/2003GL018984 https://doi.org/10.1029/2003GL018984 https://doi.org/10.1007/s10291-014-0403-7 https://doi.org/10.1007/s00190-005-0004-x https://doi.org/10.1177/0278364906072768 https://doi.org/10.1177/0278364906072768 https://kalman-filter.com/normalized-innovation-squared https://kalman-filter.com/normalized-innovation-squared https://emlid.com/reach https://emlid.com/reach https://files.emlid.com/erb/ERB-0.1.0-v7.pdf https://github.com/rtklibexplorer/RTKLIB https://github.com/rtklibexplorer/RTKLIB https://doi.org/10.3390/s24092712 https://navio2.hipi.io https://files.igs.org/pub/data/format/antex14.txt https://files.igs.org/pub/data/format/rinex_4.00.pdf https://doi.org/10.1109/TAES.1987.310829 https://www.kvh.com/fog-and-inertial-systems/fiber-optic-gyros https://www.kvh.com/fog-and-inertial-systems/fiber-optic-gyros https://doi.org/10.1007/s00190-017-1066-2 https://doi.org/10.1007/s00190-017-1066-2 https://ntrs.nasa.gov/citations/19980218814 https://ntrs.nasa.gov/citations/19980218814 https://jpaulm.github.io/fbp/0084-Ex%201135%20-%20Morrison.pdf https://jpaulm.github.io/fbp/0084-Ex%201135%20-%20Morrison.pdf https://doi.org/10.1029/95JB03048 https://doi.org/10.1029/95JB03048 https://www.nmea.org/nmea-0183.html https://www.nmea.org/nmea-0183.html https://developers.google.com/kml/documentation/kmlreference https://developers.google.com/kml/documentation/kmlreference https://doi.org/10.33012/2019.17128 https://doi.org/10.33012/2019.17128 GPS Solutions (2025) 29:171 171 Page 10 of 10 PX4 (2024) PX4 guide—ULog file format. https:// docs. px4. io/ main/ en/ dev_ log/ ulog_ file_ format. html. Accessed 6 Nov 2024 Saastamoinen J (1973) Contributions to the theory of atmospheric refraction: part II. Refraction corrections in satellite geodesy. Bull Geodes 107(1):13–34. https:// doi. org/ 10. 1007/ BF025 22083 Safran (2020) Skydel IMU plug-in. https:// github. com/ learn- safran- navig ation- timing/ skydel- imu- plugin. Accessed 5 Nov 2024 Sandwell DT (2002) Reference earth model—WGS84. https:// topex. ucsd. edu/ geody namics/ 14gra vity1_2. pdf. Accessed 6 Nov 2024 Septentrio (2016) PolaRx5TR. Product homepage. https:// www. septe ntrio. com/ en/ produ cts/ gnss- recei vers/ gnss- refer ence- recei vers/ polarx- 5tr. Accessed 20 Jan 2025 Spirent (2008) GSS9000 GNSS simulator. Product homepage. https:// www. spire nt. com/ produ cts/ gnss- simul ator- gss90 00. Accessed 1 Feb 2025 Takasu T (2013) RTKLIB manual, version 2.4.2. https:// www. rtklib. com/ prog/ manual_ 2.4. 2. pdf. Accessed 7 Nov 2024 Takasu T, Yasuda A (2009) Development of the low-cost RTK–GPS receiver with an open source program package RTKLIB. In: International symposium on GPS/GNSS, International Conven- tion Center Jeju, Korea Teunissen P (1993) Least-squares estimation of the integer GPS ambi- guities. Invited lecture, section IV, theory and methodology. In: IAG general meeting, Beijing, China Teunissen P, Montenbruck O (2017) Springer handbook of global navi- gation satellite systems. Springer, New York. https:// doi. org/ 10. 1007/ 978-3- 319- 42928-1 Thrun S, Montemerlo M (2006) The graph SLAM algorithm with applications to large-scale mapping of urban structures. Int J Robot Res 25(5–6):403–429. https:// doi. org/ 10. 1177/ 02783 64906 065387 Topp T, Hobiger T (2022) Flow-based programming for real-time multi-sensor data fusion. In: Proceedings of the 35th international technical meeting of the satellite division of the institute of navi- gation (ION GNSS+ 2022), Denver, CO, USA, pp 2492–2502. https:// doi. org/ 10. 33012/ 2022. 18429 Topp T, Maier M, Hobiger T (2022) INSTINCT GitHub. https:// github. com/ UniSt uttga rt- INS/ INSTI NCT. Accessed 29 Oct 2024 Topp T, Maier M, Hobiger T (2025) INSTINCT—a flow-based open- source PNT toolkit for integrated navigation concepts and train- ing. In: Conference poster, European navigation conference 2025, Wrocław, Poland Trimble (2018) Trimble alloy GNSS CORS receiver. Product home- page. https:// geosp atial. trimb le. com/ en/ produ cts/ hardw are/ trimb le- alloy. Accessed 16 Jan 2025 u-blox (2023) U-Blox F9 HPG L1L5 1.40 interface description. https:// www.u- blox. com/ docs/ UBX- 23006 991. Accessed 5 Nov 2024 VectorNav (2024) Product overview. https:// www. vecto rnav. com/ produ cts. Accessed 5 Nov 2024 Wang R, Becker D, Hobiger T (2023) Stochastic modeling with robust Kalman filter for real-time kinematic GPS single-frequency positioning. GPS Solut 27(3):153. https:// doi. org/ 10. 1007/ s10291- 023- 01479-5 Publisher's Note Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations. Thomas Topp is a research associate and PhD candidate at the Institute of Navigation, where he created the software framework INSTINCT and is its current lead developer. His field of expertise covers satellite navigation (RTK), inertial navigation, sensor fusion, factor graph opti- mization and C++ programming. Furthermore, he studied aerospace engineering and is an active member of the open-source community on GitHub. Marcel Maier is a research associate and PhD candidate at the Institute of Navigation at the University of Stuttgart. His main research focuses on robust navigation algorithms for autonomous flight, particularly state estimation techniques, integrated navigation and flight testing. He previously studied aerospace engineering at the University of Stuttgart, where he received his BS and MS degrees. Prof. Thomas Hobiger is heading the Institute of Navigation at the University of Stuttgart, Germany. His main research focuses on posi- tioning, navigation and timing with a focus on autonomous aircraft, GNSS, software-defined radio, precise orbit determination, propagation of radio waves, and time and frequency transfer. Dr. Hobiger is an IAG Fellow and recipient of the AGU Geodesy Section Award, in 2018. Doris Becker received the M.Sc. degree (Dipl.-Ing.) in geodesy at the University of Stuttgart, Germany in 1990. Since then, she is employed at the Institute of Navigation of the University of Stuttgart as academic staff member. She has been involved in a variety of research projects in the field of GNSS applications dealing with kinematic positioning, attitude determination, timing and geodetic networks. https://docs.px4.io/main/en/dev_log/ulog_file_format.html https://docs.px4.io/main/en/dev_log/ulog_file_format.html https://doi.org/10.1007/BF02522083 https://github.com/learn-safran-navigation-timing/skydel-imu-plugin https://github.com/learn-safran-navigation-timing/skydel-imu-plugin https://topex.ucsd.edu/geodynamics/14gravity1_2.pdf https://topex.ucsd.edu/geodynamics/14gravity1_2.pdf https://www.septentrio.com/en/products/gnss-receivers/gnss-reference-receivers/polarx-5tr https://www.septentrio.com/en/products/gnss-receivers/gnss-reference-receivers/polarx-5tr https://www.septentrio.com/en/products/gnss-receivers/gnss-reference-receivers/polarx-5tr https://www.spirent.com/products/gnss-simulator-gss9000 https://www.spirent.com/products/gnss-simulator-gss9000 https://www.rtklib.com/prog/manual_2.4.2.pdf https://www.rtklib.com/prog/manual_2.4.2.pdf https://doi.org/10.1007/978-3-319-42928-1 https://doi.org/10.1007/978-3-319-42928-1 https://doi.org/10.1177/0278364906065387 https://doi.org/10.1177/0278364906065387 https://doi.org/10.33012/2022.18429 https://github.com/UniStuttgart-INS/INSTINCT https://github.com/UniStuttgart-INS/INSTINCT https://geospatial.trimble.com/en/products/hardware/trimble-alloy https://geospatial.trimble.com/en/products/hardware/trimble-alloy https://www.u-blox.com/docs/UBX-23006991 https://www.u-blox.com/docs/UBX-23006991 https://www.vectornav.com/products https://www.vectornav.com/products https://doi.org/10.1007/s10291-023-01479-5 https://doi.org/10.1007/s10291-023-01479-5 INSTINCT: a flow-based open-source PNT framework for satellite navigation and sensor fusion Abstract Introduction INSTINCT software framework Flow-based programming Functions Real-time kinematic positioning Multi IMU fusion UBX–RINEX converter Plot node Experiments and results Static antenna Dynamic simulation Summary and outlook Acknowledgements References