1. Introduction
The Global Navigation Satellite System (GNSS) has been the most common positioning and navigation system for decades [
1], but its performance depends fully on signal propagation, and it provides a continuous navigation solution only if enough satellites are visible. To ensure robust and continuous tracking, another navigation system, e.g., inertial navigation system, is proposed to be employed to calculate the object location and motion when the GNSS service is not available [
2].
The contemporary world needs more precise navigation, and an accurate spatial position calculation is required, especially in many civilian applications, including smart driving, unmanned aerial vehicle (UAV) control, and transportation tracking. The Global Navigation Satellite System (GNSS) provides the geographic coordinates, speed vector, and accurate time of a moving object, while an autonomous inertial navigation system (INS) using the inertial measurement unit (IMU), such as a linear accelerometer and angular rate sensor, determine the object orientation, such as the attitude and heading values. This attitude and heading reference system (AHRS) is very important in applications such as autonomous vehicles, image stabilization, object detection and tracking, and AR/VR systems. In most cases, these two independent navigation systems may be integrated to calculate the position, as the GNSS may be corrupted or lost, while the INS navigation system accuracy diverges with time due to the inertial error accumulation.
The GNSS errors are not always statistically independent; however, assuming independence simplifies the mathematical models used to estimate the position and perform error analysis. The last generation GNSS receivers may update the position up to 20 Hz, due to the very complex computation task of the correlation processes, and the first position fix may be delayed for up to 45 s. In addition, the GNSS signals may be completely lost in many situations—entering tunnels, underground garages, etc. In such cases, an autonomous INS may solve the navigation task, but it requires another navigation system such as a GNSS [
3], wheel speed sensor (WSS) [
4], Doppler velocity log (DVL) baseline system [
5], or terrain map [
6] to correct its accuracy. The Kalman filter (KF) technique has been widely implemented for GNSS/INS integrated systems to overcome this navigation problem for a limited period of time [
7,
8,
9,
10]. A detailed analysis of the existing Kalman filters is presented in [
11].
A Kalman filter is also used for spatial orientation on the basis of the noisy sensor data from the inertial measurement units (IMUs) with other sources such as a GNSS or magnetometers to provide a more accurate and reliable estimate of an object’s orientation in 3D space, often expressed using Euler angles or quaternions [
12]. By modeling sensor biases and using a predictive process, the filter combines these diverse inputs, weighted by their estimated reliability, to produce a stable and precise orientation, which is crucial for navigation, robotics [
13], UAVs, and motion tracking systems [
14]. The sensor fusion techniques based on the Kalman filter models can even be implemented in the 32-bit ARM
® Cortex™-M0+ microcontrollers, which are integrated in the BNO055 [
15] or BNO08X [
16] sensors optimized for use with virtual reality (VR) or artificial reality (AR) controller systems. The calculated values of the quaternion and the Euler angles are directly readable from the application microcontroller. In our previous work [
17], we conducted a comparison analysis of the heading accuracy of the sensor fusion software integrated in BNO055 and the developed Kalman filter.
The organization of this article is as follows. In
Section 1, the system design is presented for the object location and spatial position estimation. The block diagram and the schematics are also described.
Section 2 lists the MEMS sensors selection for the GNSS/IMU system design, according to their noise parameters and output data rate (ODR) values. In this section, the theory of calculation of the Euler angles is shown based on the Kalman filter. The tuning of this Kalman filter is an essential step of this work; therefore, the noise parameters are measured and set in the measurement covariance matrix R and process noise covariance matrix Q.
Section 3 presents the study of GNSS sub-systems using different antennas, such as commercial and proposed ones. The results are provided, and the performance of the IMU and GNSS sub-systems is calculated and compared in
Section 4 and
Section 5. Finally, the conclusions are presented.
2. System Design
2.1. Hardware Description of the GNSS/IMU System
A state-of-the-art inertial measurement unit (IMU) consists of a tri-axial accelerometer, a tri-axial gyro, and a tri-axial magnetic sensor, henceforth referred to as an integrated nine degrees-of-freedom (DoF) IMU. The additional barometric sensor may be added to form a complete 10 DoF navigation system. In addition, some temperature sensors may be installed; however, contemporary MEMS sensors have an integrated sensor for temperature compensation.
The system design (
Figure 1) comprises a 10 DoF navigation system and GNSS receiver for estimation of the Euler angles (pitch, roll, and yaw) and the object position and speed vector (course, altitude, and speed magnitude). The object position and orientation are calculated using two independent Kalman filters, as this article only discusses the design and tuning of the Kalman filter regarding calculating the spatial position.
The IMU systems may calculate the spatial object’s position and its movement direction with a refresh rate over 400 Hz; however, the position calculation is a recursive process, which can lead to an expanded error accumulation. The integration of both navigation systems may significantly reduce their drawbacks. Therefore, the navigation system was distinguished with 10 degrees of freedom (DoF) and contains a three-axis linear accelerometer sensor, three-axis angular rate sensor, a three-axis magnetometer, and a barometric sensor as an altitude sensor, where the accelerometer’s output data rate (ODR) should be high enough to minimize the integration errors.
The system block diagram is shown in
Figure 2. The proposed system is based on EPS32-C3 SoC, which includes a 32-bit microcontroller up to 160 MHz and WiFi6/BT5 connectivity, a six DoF inertial measurement unit (IMU), an 18-bit three-axis magnetometer, and a 24-bit resolution barometer as an altitude sensor, to design a complete 10 DoF navigation system with a u-blox GNSS module.
As the board is powered by providing 5 V at Vin pin, the CMOS low dropout (LDO) voltage regulator is used, as RT9080 by Richtek, to convert the input voltage to 3.3 V@600 mA for the GNSS receiver and the ESP32-C3 power supply. The selection of this LDO regulator should provide a minimum 500 mA output current to ESP32-C3 SoC, and its very low drop-out voltage is only 310 mV@600 mA load, while the LDO output is stable with ceramic and tantalum output capacitors.
Most IMUs are connected to 32-bit microcontrollers [
16,
17] and external communication devices. The selection of the ESP32-C SoC is based on the integration of a 32-bit core with WiFi6/BT5 connectivity, with secure IoT applications. For example, the ESP32-C3 SoC includes a 32-bit core RISC-V microcontroller with a maximum clock speed of 160 MHz and low power modes, while the ESP32-C6 SoC includes a low-power (LP) 32-bit RISC-V processor, which can be clocked up to 20 MHz, and supports 2.4 GHz Wi-Fi 6, Bluetooth 5 (LE), and the 802.15.4 protocol (Thread/Zigbee).
The ESP32-C SoC selection is also based on the integrated FPU (floating point unit) that may perform 32-bit single-precision operations, providing powerful computing capabilities needed for the Kalman filter implementation, and its high memory resources, such as 400 KB SRAM, 384 KB ROM, and a built-in 4 MB FLASH. The support of USB communication for programming and debugging is also an advantage of this system on a chip (SoC). If the CPU resources are not enough, due to the complexity of the EKF, which depends on the filter states, this SoC may be easily upgraded to a dual-core ESP32-S3.
The ESP32-C3’s Real-Time Clock (RTC) is also used and is connected to the external 32.768 kHz crystal for improved timing accuracy, especially in deep sleep modes, while the main clock uses the 40.000 MHz crystal oscillator (
Figure 3).
2.2. MEMS Sensor Selection for the GNSS/IMU System Study
The low-cost inertial MEMS sensors (for example, the automotive grade sensors) are distinguished with a higher zero-rate offset, drift over temperature, and output noise, which make their measurements less accurate and reduce their performance, compared with other inertial sensors. The analysis of the commercial MEMS inertial sensors (for linear and angular acceleration) for navigation purposes covers sensors from several well-known manufacturers such as ST Microelectronics, TDK, and Bosch as follows:
The reasons for choosing the specified sensors are as follows:
Built-in three-axis sensors for measuring linear and angular acceleration in one housing: six DoF with the required resolution of 16-bit;
Compatibility of input/output ports;
High data refresh rate (ODR ≥ 1 kHz);
Low noise level;
Small dimensions (2.5 × 3.0 × 1.0 mm);
Built-in temperature sensors for internal data compensation;
SPI/I2C interfaces for communication.
The above shown sensors are selected and compared with the following criteria, which are the most important for the navigation purposes:
Digital resolution;
Zero-rate offset;
Output noise density;
Output data rate.
A comparison study of the parameters of the proposed sensors is shown in
Table 1 and
Table 2 for the linear accelerometers and angular rate sensors, respectively.
The sensor parameter comparison tables show that the ICM-42688-P sensor has better zero-rate offsets and higher output data rates compared with the other sensors, which is very important for navigation purposes, as the numerical integration errors are proportional to the output offset and Δt3, where Δt denotes the reciprocal of the output data rate.
We also analyzed 3D MEMS magnetometers with applicability in a high-accuracy 10 DoF navigation system, and the MEMS sensor MMC5983MA from MEMSIC was selected, distinguished by its maximum resolution of 18 bits and minimum noise of 0.4 mG total RMS, which allows determination of the course with an accuracy of ±0.5° [
21].
The analysis of high-resolution (24-bit) atmospheric pressure sensors with applicability in a 10 DoF navigation system is related to the selection of a sensor with the maximum resolution of 24 bits to determine the altitude of the object based on the atmospheric pressure value. For this purpose, the LPS22HB piezoresistive sensor from ST Microelectronics was selected, which, in addition to the necessary sensitivity and noise level, also features a built-in temperature sensor for internal data compensation, which enables achieving an accuracy of ±0.1 hPa for the pressure measurement [
22]. The barometer data are used in the EKF for the GNSS/IMU integration and should be discussed further.
Based on the sensor selection, three different 10 DoF navigation systems were investigated. The configuration of the sensors on the PCB board was as shown in
Table 3.
To achieve the best sensor performance (high sampling rate, simultaneous sensor reading, etc.), the MEMS sensors were connected to the different communication interfaces, as shown in
Figure 2 and
Figure 4. The linear accelerometer and angular rate sensor were connected to the ESP32-C3 SoC via SPI interface @ 20 Mbps, while the magnetometer and the barometer were connected to the host via an I2C interface @ 400 kbps. The second 3D linear accelerometer MMA8452Q was also connected to the I2C interface, as it is configured in motion or transient detection mode. The sensor register data are read when an interrupt signal is detected at the sensor alarm output. The interrupt pins INT1 and INT2 (
Figure 4) were connected in parallel in the software configuration and trigger an interrupt at the GPIO2 pin of the ESP32 chip. The other connections to the ESP32 GPIO pins are also shown in
Figure 4.
As the different MEMS sensors, shown in
Table 3, may support different output data rates (ODR), the system should be configured to use one common ODR. All sensors (accelerometer, gyroscope, magnetometer, and barometer) have to use the same ODR, as the data are read by the ESP32-C3 SoC using an interrupt routine driven by the 6 DoF MEMS sensor INT output (
Figure 4). On the basis of the ICM-42688-P sensor ODR characteristics, shown in
Table 4, the update rate of 50 Hz was selected.
2.3. Calculation of the Euler Angles Based on the Kalman Filter
The data from the sensors, such as accelerometers, gyroscopes, and magnetometers, are used to calculate the objects’ spatial position based on a linear Kalman filter model, which is used to combine the data from the individual sensors. The corresponding diagram is shown in
Figure 5.
The linear model of the Kalman filter is represented by Equations (1) and (2) [
23]:
where
x is a system state;
A,
B, and
H are the state, input, and measurement matrices, respectively;
y is a measured output;
u is a known input; and
w and
z are process and measurement noise, respectively, with the following mean and covariance:
where
denotes the expectation function;
Q and
R are the covariance matrix of the process noise and measurement errors, respectively.
The Kalman filter operation algorithm is based on two main actions: a priori and a posteriori estimations. In the first step, called the time update, the values of vector
x are predicted, and the covariance matrix
is estimated according to the following equations:
where
is the predicted state estimation,
is the predicted covariance matrix,
is the update estimated covariance matrix, and
is the updated state estimation.
The Kalman filter update states may be described as follows [
24]:
where
is the Kalman filter gain,
is the updated state estimation vector,
is the measurement vector,
is the updated estimated covariance matrix, and
is the identity matrix.
The object’s spatial position may be represented by the Euler angles
Φ: pitch,
θ: roll, and
ψ: yaw (
Figure 5), or by quaternions [
25] to avoid the “gimbal lock” problems and singularity. The pitch and roll value calculations use the input and measurements vectors, which are defined in Equations (11) and (12), respectively:
where α denotes an angle, and ω is the angular rate.
Taking
as the state vector, matrices
A,
B, and
H are given as follows:
where
T denotes the sampling interval, and
is a gyroscope bias, which is included in the state vector giving the algorithm the possibility of correcting the angular velocity value.
In the case of orientation evaluation,
As the pitch and roll angles are estimated, the calculation of the magnetic field components may be accomplished as follows:
where
M denotes the magnetic field components’ (
Mx,
My,
Mz) matrix in a local horizontal frame (
l) and body coordinate frame (
b), and
denotes the rotation matrix:
Therefore, the orientation precision of the magnetic orientation systems not only depends on the calibration validity of the magnetometers but also is closely related to the errors of the tilt angles. The magnetic heading
ψ may be calculated as follows:
The calculated magnetic heading angle may be converted to the geographic north using the magnetic declination based on a topographic map or the use of an online tool such as NOAA’s Declination Calculator.
2.4. Tuning of the Kalman Filter
A major advantage of the Kalman filter is that it performs the most optimal state estimation and provides an estimate of the state covariance matrix. The matrix
Q, representing the system noise covariance, and
R, which is the measurement noise covariance matrix are as follows:
where
represents the orientation measurement noise, and
represents the angular rate measurement noise.
The accuracy and behavior of a Kalman filter relies on the values placed in the different covariance matrices. The measurement noise is modeled and determined by the measurement noise covariance matrix R. High values in the matrix R may not correct the IMU sufficiently, while small values cause the system to rely more on the sensor data than the model [
26].
There are different methods to model and estimate the inertial sensor stochastic errors, such as the Autoregressive (AR) model [
27,
28,
29], the Gauss–Markov (GM) model [
30], and the Allan Variance (AV) [
31,
32]. These methods are verified on modeling inertial sensors errors [
33].
A common technique used to quantify various noise sources in inertial sensor data is called the Allan Variance [
34]. The Allan Variance (AV) identifies the stochastic error sources acting on inertial sensors and determines the corresponding noise parameters. According to the noise parameters, the power spectral density (PSD) function of the stochastic error sources may be determined. An explanation of the PSD and AV may be found in [
35]. The relationship between the AV and PSD of the noise parameters in the original data set
Ω(
t) is given by
where
SΩ(
f) is the two-sided PSD of
Ω(
t).
The AV’s advantages may be described as time-domain analysis, noise source identification, and improved convergence [
36]. Due to these advantages, the IEEE recommends the Allan Variance for identifying stochastic errors and determining noise types in inertial sensors.
2.5. GNSS Receiver Selection for GNSS/IMU System Design
The analysis of compact form factor GNSS modules for 10 DoF navigation system is conducted with three different GNSS modules as follows (
Table 3):
NEO-M9N or NEO-F10 from the u-blox company. This module supports UART and I2C communication interface, as well as NMEA and UBX protocols. This module was chosen as the base because u-blox is a leading manufacturer of GNSS modules and is compatible with ublox’s u-center application. The maximum receiver sensitivity is −165 dBm.
MinewSemi ME32GR01. The module is pin-compatible with ublox’s NEO series and has the required sensitivity, low power consumption, and UART connectivity. The maximum receiver sensitivity is −165 dBm.
ATGM332D of ZHONGKEWEI company. This low-cost module, pin-compatible with ublox’s NEO series, has the necessary sensitivity, low consumption, and connectivity via UART interface. The maximum receiver sensitivity is −162 dBm.
The GNSS module is connected to the ESP32-C3 microcontroller via UART interface and I
2C as an option, if supported (
Figure 6). The data rate is set to 9600 bps or 38,400 bps depending on the selected receiver, which is powered by the main LDO regulator U1 or USB bus via the LDO regulator U4, only if the main power source is available. The GNSS receiver may use a passive or active antenna, which is powered from the VCC_RF pin via the low-pass filter (LPF) L1-C2 and current limiter resistor R3.
3. Results
3.1. The Noise Parameter Estimation of the Linear Accelerometers and the Angular Rate Sensors
The Kalman filter algorithm was implemented in the MATLAB environment (Version: 25.2.0.2998904 (R2025b)). The experimental algorithm verification was conducted in real-time situations on moving vehicles, and the obtained results were compared with similar angle values, which were calculated by both navigation systems.
The first step of the test was determined by the calculation of the sensor noise parameters, i.e., the measurement noise covariance matrix R. The sampling rate was set to 50 Hz, which is equal to a time update period of 20 ms. The Allan Variance analyses of the linear accelerometers, shown in
Table 3, are represented in
Figure 7,
Figure 8 and
Figure 9 for the MEMS sensors BMI270, ICM-42688-P, and LSM6DSL, respectively.
Figure 10,
Figure 11 and
Figure 12 represent the AV analysis of the gyroscopes of the same sensors, respectively, while
Figure 13,
Figure 14 and
Figure 15 represent the histograms of the accelerometer bias instability for the corresponding sensors, in which the
y-axis represents the number of the elements within each interval if the x values are divided to 1000 bins. The calculated coefficient values, according to the curve slope for the Allan Variance, are shown in
Table 5,
Table 6 and
Table 7, respectively.
The parameters of the normal distribution of the sensor data are calculated and presented in
Table 8,
Table 9 and
Table 10, respectively, using the MATLAB integrated function fitdist(), which estimates the mean (mu) and standard deviation (sigma), and the 95% confidence intervals for the parameters. The values are calculated by removing the mean value of the linear accelerations
ax,
ay, and
az, to eliminate the influence of the sensor slope, while the total linear acceleration
A is calculated by the raw
ax,
ay, and
az values, according to the equation
. All linear accelerations are normalized towards the standard acceleration of gravity on Earth’s surface
g (
Figure 13,
Figure 14 and
Figure 15).
The obtained values of σax, σay, σaz, σgx, σgy, and σgz for the MEMS sensor ICM-42688-P are placed in the measurement covariance matrix R (Equation (23)) and process noise covariance matrix Q (Equation (22)), and the initial Kalman filter values are configured.
3.2. GNSS Accuracy Estimation
The GNSS accuracy estimation was tested using three different GNSS receivers, whose selection is discussed in
Section 2.5. The tests were accomplished using five different antennas: two commercial ceramic patch antennas (Taoglas GPSFB356.A in
Figure 16 and TE connectivity (Linx) ANT-GNCP-TH258L15 in
Figure 17) and three designed patch ones, whose characteristics were previously described in [
37,
38]. The first proposed GNSS antenna was a circular polarized L1 patch antenna with suspended patch (
Figure 18), the second one was a dual band (L1/L5) fractal GNSS antenna (
Figure 19), and the third antenna was designed as a helix one (
Figure 20). The antenna patterns are shown to explain the geometry of the used antennas and to compare the characteristics of the commercial antennas and the designed ones such as the antenna size, directivity, gain, etc., which affect the number of the visible satellites and the configuration of the tracking ones, used for the calculation of the position accuracy. All the proposed GNSS antennas were simulated and designed using Ansys EM Suite 2025R2 software (version 2025.2.0) from Ansys Inc., Canonsburg, PA, USA.
The GNSS performance was examined with a clear sky using U-center 2 evaluation software version 25.03.156221 from U-blox AG company (Thalwil, Switzerland). The analysis was accomplished via the connection of each antenna to the RF_IN input of the NEO-F10 u-blox AG GNSS receiver for 2–3 min. The position accuracy was analyzed according to the HDOP (Horizontal Dilution of Precision) and PDOP (Position Dilution of Precision) values, where lower HDOP values indicate better accuracy, while higher values suggest reduced reliability. A lower PDOP value helps a GNSS receiver obtain a fixed coordinate faster and maintain it for longer. The u-blox software calculates the Min/Max values, the averaged (Avg), and standard deviation (Std Dev) of the 2D coordinates. The satellite signal/position view and used/tracked satellites are also shown for comparison purposes.
An experiment was conducted by installing the proposed system on a Skoda Fabia II 1.4 TDI passenger car. The system was installed on the vehicle dashboard (the red arrow in
Figure 26) to guarantee the best satellite view and smaller ferromagnetic influence over the magnetometer. The data were transferred to a PC via a USB connection and recorded on a hard disk as a TXT file using a serial terminal program @ 921,600 bps.
The recorded data were imported in the MATLAB environment and were processed and synchronized to compare the linear and angular rate accelerations, magnetic field values, and vehicle position, speed, and course, which were calculated using the GNSS and IMU sub-systems. The recorded track is shown in
Figure 27, where the green and the red dots show the starting and the final track points, respectively. The track curve was selected to contain 90- and 180-degree turns.
The measurement results from the linear accelerations and angular rates are shown in
Figure 28 and
Figure 29, respectively.
The obtained results may be used to correctly set the gyroscope sensor internal filters and calculate the engine rotation speed (after a Fourier analysis in the frequency domain), etc. The results from the different systems were compared regarding the heading angle
ψ calculations. Their values were obtained using three independent sources: the Kalman filter output (KF COG), the GNSS receiver course over ground data (GNSS COG), and the angular rate sensor output integration (G
z integration) based on the trapezoidal method. The comparison results are shown in
Figure 30, where the initial heading angle of all systems was set to 0. Since the GNSS and IMU data were sampled with different sampling rates (1 and 50 Hz, respectively), the GNSS data were linearly interpolated between the measurement points.
It is clear that the heading angle error between the Kalman filter output and other sources did not exceed 5°, and the Kalman filter output data are a bit noisy. Therefore, an additional smoothing filter can be added for a stable heading.
4. Discussion
The presented results show that GNSS and IMU systems may be used independently or as an integrated system to solve navigation problems regarding object location and spatial position. For example, the heading angle may be calculated using three independent sources, such as the angular rate gyroscope, magnetometer, and GNSS receiver. The study of the noise parameters of the MEMS sensors shows that the commercial linear acceleration sensors have approximately similar characteristics, such as a digital resolution of 16 bits, a measurement range up to 16 g, a zero-rate offset in the range from ±10 to ±20 mg, a noise density of 70 µg/√Hz, and ODR values of ones to tens of kHz. At the same time, the angular rate sensors are distinguished by higher noise levels of 8 mdps/√Hz at the same ODR values. This circumstance was estimated during calculation of the Allan Variance deviation calculations represented in
Figure 7,
Figure 8,
Figure 9,
Figure 10,
Figure 11,
Figure 12 and
Figure 13. The theoretical analysis of the MEMS sensor noise parameters enabled the selection of the ICM-42688-P sensor on the basis of its higher digital resolution of up to 19 bits, higher ODR of up to 32 kHz, and very low angular rate sensor noise density of 2.8 mdps/√Hz. The experimental study of the Allan Variance deviation confirmed this, as shown in
Figure 7,
Figure 10 and
Figure 13. The calculated values of the Allan Variance deviation for the linear accelerometers showed similar values for all the tested sensors (
Figure 9,
Figure 12 and
Figure 15). The calculated normal distribution parameters showed that the sigma value was equal to appr. 10
−3 for all the tested linear accelerometers. However, the analysis of the angular rate sensor characteristics showed that the mu and sigma values were equal to 10
−1 ÷ 10
−2 for the LSM6DSL sensor and 10
−1 for the BMI270, while the corresponding values were lower by one order for the ICM-42688-P sensor.
The analysis of the GNSS system performance showed excellent accuracy, due to the very low HDOP values for all selected antennas below 1.2. The worst results were obtained using ceramic antennas (PDOP = 1.5 ÷ 2.4, HDOP = 0.8 ÷ 1.2), while the corresponding values with helix and patch antennas were PDOP = 1.0 ÷ 1.5 and HDOP = 0.58 ÷ 0.74. This situation was expected, as the patch antennas have a wider directivity diagram, lower losses, and good phase characteristics in the L1/L5 GNSS frequency ranges. Their disadvantage is a larger size, which is not critical in transport systems, for example. In all cases, the position accuracy was in the sub-meter range due to the SBAS Differential Correction Service corrections. The number of visible satellites from all satellite constellations exceeded 20 in all cases and can reach values up to 35 in open sky scenarios.