Full Real-Time Positioning and Attitude System Based on GNSS-RTK Technology

: An accurate positioning and attitude computation of vehicles, robots, or even persons is of the utmost importance and critical for the success of many operations in multiple commercial, industrial, and research areas. However, most of these positioning and attitude systems rely on inertial measurement units that must be periodically recalibrated and have a high cost. In the present work, the design of a real-time positioning and attitude system using three positioning sensors based on the GNSS-RTK technology is presented. This kind of system does not need recalibration, and it allows one to deﬁne the attitude of a solid by only computing the position of the system in the global reference system and the three angles that the relative positions of the GNSS antennas deﬁne with respect to the principal axes of the solid. The position and attitude can be computed in real time for both static and dynamic scenarios. The only limitation of the system is that the antennas need to be in open air to work at full performance and accuracy. All the design phases are covered in the prototype construction: requirement deﬁnition, hardware selection, software design, assembly, and validation. The feasibility and performance of the system were tested in both static and dynamic real scenarios.


Introduction
The accurate positioning and attitude computation of vehicles, robots, or even persons is of the utmost importance and critical for the success of multiple operations and missions in many commercial and research areas. The attitude and positioning info can be used to follow the state of progress of a particular mission or to relay it as a navigation aid to the navigation systems [1][2][3].
Global Positioning Systems (GPSs) are commonly used for localization in a wide number of application scenarios. The advantages of GPSs are their wide area coverage, the capability of providing navigation data seamlessly to multiple vehicles, relatively low power requirements, the miniaturization of receivers, and being environmentally friendly in the sense that their signals do not interfere significantly with the ecosystem. However, it is important to notice that there are scenarios in which GPSs are ineffective or even useless, for example, indoors, in caves, in urban scenarios with many surrounding buildings, in space, or underwater, and alternative positioning systems must be employed (see [4,5] and references therein).
Most of the attitude systems rely on inertial measurement units (IMUs) that must be periodically recalibrated and that imply a high cost to obtain an accurate position and attitude computation. This makes them unaffordable for many projects and developments; thus, there is a need for alternative systems.

•
Electromechanical gyroscopes and accelerometers: This technology has fallen into disuse and can only be found in old systems. Its accuracy may be very high, but due to the large number of high-precision mechanical elements, its cost and maintenance is also very high. There are many different types, but all rely on the same principle: rotation masses that create torques due to accelerations and rotations, and devices that measure these torques and relate them with angular velocities and accelerations.

•
Microelectromechanical systems (MEMSs): This is the most commonly used technology for computing the attitude due to its low cost, low energy consumption, and good performance.
The main working principles of this technology are introduced in a very brief way. The main principle for accelerometers relies on a suspended mass with a spring that will be displaced in the direction of the spring due to an acceleration, creating or changing an electrical capacitance. The gyroscopes work in a similar way, with a mass placed over a piezoelectric actuator, which creates a Coriolis force when an angular velocity actuates over the device [9]. Finally, microelectromechanical (MEM) magnetometers use an inductance with a current, and if there exists a magnetic field in the perpendicular direction of the inductance, a Lorentz force is generated [10].
• Optical gyroscopes: These systems are based on the Sagnac effect [11], and are classified into ring gyroscopes (RLGs), which use mirrors for the light circuit, and fiber optic gyroscopes (FOGs), where the light travels through a fiber optic circuit. Their main advantage is the absence of mobile parts, with a lower maintenance. RLGs have more resolution than FOGs and can detect smaller velocities.
In general, IMUs are not enough to correctly compute the attitude of a solid; it is necessary to fuse the information of the sensors (accelerometers, gyroscopes, and magnetometers) and define a dynamical model of the solid, since different systems will behave in a different way, such as a plane or a car. Any of the aforementioned sensors has the same problem, together with the high cost and limited access of high-precision devices for the general public.
In this work, we study the use of the GNSS-RTK technology to construct a high-precision positioning and attitude system, with low cost compared with high-precision sensors and systems than can be found commercially. Moreover, it is independent of the platform in which is installed, since it does not need the mathematical model of the platform dynamics. The only limitation of this device is that for very high dynamics (more than 4G), its performance may degrade due to possible deformation of some of the components, whose features may change. In addition, this device can only work at full performance on open air; for other scenarios, we must consider alternative technologies, as mentioned before.
Therefore, the main objective of the present work is the construction and validation of an AHRS and positioning system based on the GNSS-RTK technology. The position computation using GNSS-RTK technology is straightforward, so this work is focused on the AHRS. Then, the contributions are fivefold: (i) design of the system based on hardware that is commercially available, (ii) programming of the microcontroller to enable the communication with the GNSS receivers, (iii) synchronization of the three GNSS receivers in real-time, (iv) design of the algorithms for attitude and position computation, and (v) construction and validation of the prototype in real scenarios.
The paper is organized as follows. In Section 2, the GNSS-RTK technology is introduced, and the position computation and error correction for this kind of system is explained. The communication protocols used and the prototype design are detailed in Section 3. In Section 4, the experimental tests of the prototype are shown for both static and dynamic scenarios, and for different configurations of the GNSS antennas. Finally, conclusions and future work are explained in Section 5.

GNSS-RTK Technology
In this section, the GNSS-RTK technology is introduced. GNSS is the common name used for satellite navigation systems, which include GPS (North American system), Galileo (European system), GLONASS (Russian system), BeiDou (Chinese system), and QZSS (Japanese system).

Position Computation
Most of GNSS receivers, such as those included in mobile phones, cars, smartwatches, etc., solve the position computation by aligning pseudo-random signals (code-phase), one from the satellite and another from the receiver [2]. The time delay between the two signals is the time that the signal needs to travel from the satellite to the receiver, and knowing that it travels at the speed of light, then it is possible to compute the distance between satellite and receiver. Repeating this operation with at least four satellites [12], the receiver position can be defined in 3D (latitude, longitude, and height). The code-phase method can ideally get an accuracy of 3-5 m, which is defined by the frequency at which the bits of the pseudo-random signal are sent (approx. 1 MHz) combined with an accuracy of the electronics of around 1-2% [13].
RTK technology employs a similar concept, but instead of aligning the content of the signal, it tries to synchronize the carrier signal (ignoring its content) with a signal generated by a local oscillator in the receiver (carrier-phase). The difficulty in the carrier-phase method lies in knowing the total number of cycles between the satellite and the receiver signals (see Figure 1). To overcome these carrier-phase ambiguities, the code-phase method is firstly employed to find an approximate estimation, and then, the carrier-phase method is used for a more accurate solution. This way, the problem becomes simpler, although it does not have a simple solution [14].  Some GNSS receivers can receive signals in more than one transmit frequency band. They have the important advantage of simplifying the computation to solve the phase difference ambiguities of the carrier signal, which results in a larger position resolution speed, as shown in Figure 2.  The ambiguity resolution methods are complex; for detailed explanations and several resolution methods, the reader is referred to [15][16][17] and references therein.

GNSS Error Correction
The position computation method explained above could be enough to obtain an accuracy of centimeters. However, there exist several error sources that degrade the position estimation [12]: • Satellites' clocks (±2 m): Satellites' clocks are high-precision atomic clocks, but they have to be periodically readjusted from terrestrial control stations using more precise clocks. At the orbit height of the satellites, an error of 10 nanoseconds causes a positioning error of approximately 3 m.
• Orbital errors (±2.5 m): The satellites' orbits are known and periodically retransmitted by other satellites (ephemerides). However, the real orbits are not completely predictable, and their monitoring must be readjusted from terrestrial control stations.

•
Ionospheric delay (>5 m): The radio signal propagation of the satellites through the ionosphere has important delays due to solar activity, position, time, etc., which are constant within relatively large geographical areas (50 km of radius).

•
Tropospheric delay (±0.5 m): The radio signal propagation of the satellites through the troposphere has delays with similar causes to those of the ionospheric delays, and they are constant within local geographical areas.

•
Receiver noise (±0.3 m): Any delay in the signal processing or any error in the oscillator frequency causes position estimation errors.

•
Multipath propagation (±1 m): When the signal transmitted by a satellite rebounds in an object, the GNSS receiver measures a larger transmission time than the real one [18]. This delay adds an additional position estimation error.
There are several methods to reduce the impact of the above sources of errors. Each GNSS receiver model can support some of them; the following are the most usual ones: • Advanced multi-frequency and multi-constellation receivers improve the global accuracy and robustness, and are able to reach an accuracy of one meter in ideal conditions. • Satellite-based augmentation systems (SBAS) are geostationary satellites that emit corrections that are valid for specific geographical areas. • The RTK technique described in Section 2.1 provides the best results concerning the global precision. A base, i.e., a receiver whose position is known, may be used to mitigate parts of the errors described above. To know the position of a base with high accuracy, it may be installed over geodesic points of known position, or it can be installed over a point whose position is not initially known, but its average position is computed over a large enough time window. The corrections provided by the base are less effective as the receiver (rover) goes further from the base, since many of these corrections depend on the geographic localization. The accuracy deteriorates at a rate of 2 ppm (parts per million), which corresponds to 2 mm for each kilometer between the base and the rover (baseline). It is important to remark that the absolute position of the rover depends on the absolute position of the base. However, the relative precision of the rover with respect to the base is independent. The installation of a new base requires additional time and equipment, so it is impractical. If infrastructure and Internet connection exist, an alternative solution is to use the GNSS reference station networks. These networks provide corrections by Internet using the NTRIP protocol and allow the rover to move along all the area covered by the networks. In applications where only the relative position between base and rover is important, the absolute position computation of the base may be discarded. In addition, some GNSS receivers can work as a mobile base, which allows the rover to receive corrections from a mobile base with a relative precision of a few centimeters.

•
If the position information is not needed in real time, the post-processed kinematic (PPK) technique may be employed. It uses the same method as the RTK technique, but in this case, the receiver records the data and signals received from the satellite. The data of the base or reference stations are subsequently requested in receiver-independent exchange (RINEX) format and post-processed by software, obtaining the same accuracy as the RTK technique. The main drawback of this method is the lack of information in real time, while its main advantage is that real-time corrections are not needed.

•
The precise point positioning (PPP) technique uses a different concept. This method generates parameters for the models of the error sources so that the receiver can compensate them. Terrestrial reference stations are needed to compare their known positions with the measurements and then generate these parameters. The main advantage of modeling the error sources is that the scope of application can be global and the bandwidth needed to transmit the model parameters is much smaller than the bandwidth needed to transmit the RTCM (Radio Technical Commission for Maritime) corrections used by the RTK technique. The main drawbacks are that the receivers need more computing capacity to process the error models and the precision is lower than the one obtained with RTK. PPP services require payment, and due to the low data consumption, the information is transmitted by Internet and by satellite.
Following this trend, there are also many works for the development and modernization of the GNSS. For example, in [19], a review of the satellite navigation status is made, where the problems and challenges are treated, remarking the opportunities, trends, and important values of satellite navigation, and in [20], the current status and planned development of four global navigation satellite systems (the American GPS, Russian GLONASS, European Galileo, and Chinese BeiDou) are reviewed, describing the features of modernization and improvements on positioning, navigation, and timing. For further information about the future and modernization of the different satellite navigation systems, the reader is referred to [21][22][23][24].
It is important to remark at this point that, due to the significant impact of this technology in a wide number of areas, there are multiple research works dealing with techniques and strategies to improve the accuracy and reduce the positioning error. To name but a few, see, for example [25][26][27] and references therein. In [25], a new calculation strategy is presented for the computation of the aircraft's resultant position using the GPS (Global Positioning System) SPP (Single Point Positioning) code method in order to improve the quality of determination of the coordinates and accuracy of GPS SPP positioning. In [26], the authors deal with the problem of combining multi-GNSS signals in a single functional model. A methodology and quality assessment of selected methods allowing for multi-GNSS observations is presented, where loose and tight integration strategies applied to the ionosphere and troposphere weighted model are characterized. In [27], precise navigation based on SBAS technology and CORS stations is studied. To estimate reliable and redundant GPS/EGNOS positions, three rovers with GPS receivers are used, and a Kalman filter is employed to compute the final solution.
Therefore, from the above, it is clear that GNSS in general, and GNSS-RTK in particular, are important technologies used in multiple applications and areas where maximum precision and reliability are needed, making it a very active research and commercial field.

Material and Methods
The protocols to transmit information and to communicate the different elements and devices of the prototype are introduced in this section. Afterwards, a description of the hardware selected and the software implemented is given.

Communication Protocols
The protocols used for the prototype are NMEA (National Marine Electronics Association) 0183, UBX, and RTCM version 3, which are briefly described below.

NMEA 0183
This protocol is a standard in the industry, and it is used for multiple applications, such as marine electronics, anemometers, IMUs, autopilots, GNSS receivers, etc. The information is sent in ASCII characters, so the messages can be read without translators. However, its size is not optimal.
Messages are protected by a checksum that is computed as an exclusive "or" of all characters (8 bits) between the initial character and the "*" that precedes the checksum. This checksum is the easiest, but it has a high percentage of undetected errors [28].
This protocol has a series of standard messages, but it also allows each developer to create their own messages simply by following the specifications.
In this work, the NMEA (National Marine Electronics Association) protocol is used to generate a unique message with the attitude and position of the solid.

UBX
This protocol belongs to U-Blox enterprise, but their specifications are open. Its application is limited to equipment of this manufacturer, so it is not a standard in the industry. The information is sent in binary, which optimizes the size of messages, although a translator is needed to read them.
In this work, the UBX protocol is used to read the information about the relative position of the GNSS receivers.

RTCM Version 3
This protocol is an international standard to publish GNSS data in real time. All high-precision GNSS receivers support this protocol.
It provides a binary message like the UBX protocol, and it is protected by a CRC-24Q checksum (cyclic redundancy verification) with a very low probability of undetected errors [29].
This protocol is mentioned because GNSS receivers use it to communicate with each other (see [30]), but it is not programmed for this prototype.

Prototype Design
The objective is the design of an attitude and positioning system for static and dynamic solids that provides the highest possible accuracy. The technique that gives a larger accuracy is RTK, and the fact that the solid may be static makes three the minimum number of receivers that must be used.
It is important to keep in mind some design requirements that describe the prototype development and the attitude and position computation:

•
The attitude information is computed as Euler angles (yaw, pitch, and roll) and as cuaternions in the NED (North, East, Down) reference system.

•
The position information is given as latitude, longitude, and ellipsoidal height in the WGS84 system.

•
The attitude is given with respect to the plane formed by the three antennas of the receivers. The antenna 3 cannot be aligned with antennas 1 and 2, and these two latter define the heading of the solid.
The attitude computation of the solid given the relative positions of the three antennas is done following standard procedures [31][32][33].

Hardware
For cost reasons, the RTK receiver model selected is the double-band RTK receiver simpleRTK2B and simpleRTK2Blite by Ardusimple (see Figure 3), based on the module ZED-F9P of U-Blox. The double-frequency antenna selected is the AS-ANT2B-SUR-L1L2-25SMA-00 of Ardusimple. The microcontroller selected is the STM32F746ZG of ST, mounted in the development board NUCLEO-F746ZG (see Figure 3).
The GNSS receivers and antennas, as well as the microcontroller, meet all the requirements, and both devices are compatible with standard Arduino pins, reducing the number of welding points. The development board is oversized for the requirements of this work, but it was chosen due to its low cost and because it will allow the use of other peripherals in the future without changing the components. This board also includes a debugger, making it particularly appropriate. The board manufacturer also provides free software for the peripheral configuration (STM32CubeMX) and a programming/debugging environment (STM32CubeIDE). The system design is quite simple, since each receiver has two UART ports and the development board supports several UART ports. Figure 4 shows the system schematic and the level of components, power supply, data, and protocols. Given the system shown in Figure 4, the relative positions between the GNSS receivers can be obtained with maximum accuracy, allowing the computation of the system attitude with the best possible accuracy. However, this configuration does not allow one to know the global position of the receivers with an accuracy of centimeters, since they are not receiving corrections from any reference station.
It is important to remark that the main objective of this work is to compute the system attitude with the maximum possible accuracy. However, if the global position must be computed with high precision, too, it can be obtained by simply providing RTCM corrections at the UART2 of the first GNSS receiver.
To ease the system validation, a small screen was installed in the prototype to show the attitude information (see Figure 5). This screen is a commercial model that includes a microprocessor and directly prints the characters that are sent from the microcontroller by the UART port. The connections are not shown, since they are not a necessary element for the prototype; they are included just for validation purposes.

Software
The software programmed in the microcontroller can be divided into three parts: 1. Initialization of the microcontroller peripherals: It is called just once at the beginning, and all parameters are initialized. 2. Continuous loop: The microcontroller continuously tests two things: (i) If valid information has been received from the GNSS receivers; in this case, it calls the attitude computation function.
(ii) If any of the data buffers of UARTs 1 and 2 have information; in this case, the information is processed. 3. Interruptions in the data reception of UARTs (DMA).
Each one of these code groups has protections to prevent blocks, for example, to control that buffers do not exceed their capacity, avoid zero division, etc.
The configuration of the microcontroller and the GNSS receivers is described in Appendix A.

Results
It has already been mentioned that the system is capable of receiving RTCM corrections by the UART2 of the GNSS 1 receiver, which would allow the reported position to have errors of approximately 2 cm under ideal conditions. These corrections are not used in the system validation, as it is intended to demonstrate the quality of attitude estimations in a system that is fully autonomous and independent of external corrections.

Precision and Accuracy of Measurements in a Static Configuration
To perform the static validation, the antennas were installed in different orthogonal configurations (see Table 1 and Figure 6). The general validation method of the system would start with an orthogonal configuration of the antennas parallel to the ground, where the axis formed by antennas 1-2 points to the North and the axis formed by antennas 1-3 to the East. The first angle to be applied is the yaw, rotating all of the configuration over the horizontal plane clockwise (around the Z-axis of the NED reference system) until axis 1-2 is in the final direction. The second angle to be applied is the pitch angle, rotating the entire system around the axis 1-3 until antenna 2 is in the final position. The last angle to be applied is the roll angle, rotating the system around the axis 1-2 until antenna 3 is in the final position. In the following tests, the system was installed on a roof to keep the antennas' positions fixed and to properly measure the real distances and angles. The results shown do not have any post-processing, only that the time series of each configuration were trimmed to 60 s (300 samples) so that the duration is the same for all tests. Table 1. Configurations of the antennas for the static tests.  It can be noticed in Figure 7 how the standard deviation decreases as the distance between antennas increases, as might be expected. Since the antennas are in an orthogonal configuration with axes of equal length, the standard deviations of pitch and roll angles are expected to be similar, as shown in Figure 7. The yaw angle has a lower standard deviation in every configuration. This behavior makes sense, since, for all configurations, the pitch angle is close to zero and the yaw angle is computed as the projection of antenna 2 on the horizontal plane, which means that the variability of the measurements of this receiver on the vertical axis does not affect the yaw measurement. Figure 8 shows the average value of the three angles that define the attitude of the solid body (the roof) for each of the configurations. An offset was added to the roll and yaw angles to make the visualization of the three angles in a single figure easier. The roll angle offset is 14 • , which corresponds to the slope of the roof. The yaw angle offset corresponds to the orientation of the roof ridge, which is 33 • from the North (see Figure 9).

Configuration Receiver Antenna Distance 1-2 [m] Receiver Antenna Distance 1-3 [m] Angle 2-1 and 3-1 [deg]
It can be appreciated in Figure 8 that the average value of all configurations is very similar. Two sources of non-system-associated errors that may affect these measurements must be taken into account: • The antennas of receivers 2 and 3 were placed manually for each configuration.

•
The roof does not form a perfect plane due to errors in the construction and bending of structural elements, as can be seen in Figure 10.   [samples] [samples]

Configuration A Configuration B Configuration C Configuration D
[samples] [samples] Figure 11. Cont.

Robustness of the Algorithm in Non-Orthogonal Configurations
The algorithm for the attitude computation given the antennas' positions is also designed to work in non-orthogonal configurations, with only the constraint that the three antennas cannot be aligned. In order to validate the algorithm in these scenarios, the settings described in Table 2 were tested. The angles of each configuration were manually computed with the recorded positions of each receiver. Figure 12 shows one of the non-orthogonal configurations where the antenna vectors 1-2 and 1-3 form an angle of 60 • . As in the previous tests, the results do not have any post-processing, only that the time series of each configuration were trimmed to 60 s (300 samples) so that the duration is the same for each test. Figure 13 shows how the standard deviation of the pitch and yaw angles remains constant between configurations, since the antennas of receivers 1 and 2 are always at the same position. In contrast, the standard deviation of the roll angle increases as the antenna of receiver 3 approaches that of receiver 2.   Figure 14 shows how the average value of the three angles does not depend on the position of antenna 3 beyond the errors due to the irregularity of the surface where the tests were performed.

Accuracy of Measurements in a Dynamic Configuration
To perform this test, three antennas were installed on the roof of a car, as shown in Figure 15. The distances between the antennas of receivers 1-2 and 1-3 are 1.5 and 1.1 m, respectively. Vectors formed by receivers 1-2 and 1-3 form an angle of 90 • . Data were recorded on a national road segment of about 4 km with good visibility of the sky and without obstacles that may block the signals (bridges crossing the road, road indicators, etc.).
Validating the system on a moving solid has the difficulty of having a reliable reference with which to compare the data acquired and computed. For this reason, the variability of the measurements was analyzed in a segment of the road where the car follows a straight path at constant speed. Figure 16 compares the yaw angle computed by the attitude system with the vehicle trajectory angle, which is computed as follows: where lat i , lon i are the latitude and longitude at t = i, and LatY i , LonX i are the latitude and longitude differentials at t = i transformed into Euclidean distances with the following transformation [34]: A good correspondence is observed between the angle of the vehicle's trajectory and the yaw angle, even at the two roundabouts (seconds 10 and 170).

Time [s]
Calculated yaw as position diferential Yaw Speed on the ground Figure 16. Speed and yaw angle during the dynamic testing. Figure 17 shows the pitch and roll angles and the height during the same time interval as in Figure 16. In most of the trajectory, the vehicle is on a light negative slope, losing about 35 m in 4 km, a fact that is observed in the pitch angle, which has a negative value, except in two small sections in which the slope of the road is positive. The vehicle roll angle always has a positive angle around 1 • ; this value may be due to an error in the manual installation of the antenna, a non-symmetrical distribution of the weights in the vehicle, or the inclination of the roadway by a longitudinal drainage. Table 3 shows the standard deviations on the three attitude angles for the sample time interval between 90 and 130 s, since it corresponds to a segment of the road with constant slope and no changes in the yaw angle.
Taking into account the distance between antennas in the vehicle and the irregularities of the path, the results show very good performance and precision. However, these results are a bit larger than those shown in Figure 7, where the system was static.

Conclusions
This work discussed the feasibility of using GNSS-RTK technology for the computation of the attitude of static and dynamic solid bodies. The accuracy and reliability of the measurements in the tests carried out confirm that the application of this technology is justified, presenting the following advantages:

•
No calibrations are required.

•
It is an autonomous system, which does not need external corrections. • Very low cost for the accuracy reported compared to other technologies. The price of the equipment used (excluding the hours of development) is around 700 EUR, and this technology is expected to reduce its costs as it becomes more popular.

•
Technology without export restrictions.

•
The accuracy of the system can be improved by increasing the distance between antennas. However, for more than 10 m of cable between antenna and receiver, it is necessary to install signal amplifiers or special cables. • HDOP-type variables, the number of satellites used in position calculation, or the "Fix" type can be used to validate or discard system measurements.

•
The vehicle dynamics (<4G) do not affect measurements.
Nevertheless, some certain limitations must be pointed out: • Low data frequency compared to other technologies. There are GNSS-RTK receivers that operate up to 100 Hz, but their price is higher.

•
The system does need to operate outdoors with good visibility of the sky.

•
It is not valid for lightweight and small-size systems because the antennas need a minimum distance.
In short, this system is very convenient to be installed on aircraft, ships, or transport systems where it is possible to take advantage of the installation of the antennas as separately as possible.
Further lines of work are: • Analysis and compensation of the multipath error in environments with limited sky visibility, such as urban scenarios.

•
System validation in a dynamic configuration with high-precision IMUs. • Validation of the system and its degradation under high dynamic conditions (>4G).
• Enabled messages: UBX-NAV-PVT, UBX-NAV-RELPOSNED, UBX-NAV-EOE, NMEA-GGA (only for GNSS receiver 2) For GNSS receiver 1, which, as mentioned, works as the mobile base, the messages recommended by the manufacturer were chosen: • MSM: They are a standard of the RTCM protocol, and, particularly, MSM7 offers the maximum information with respect to observation and numeric resolution [35]. Messages MSM7 1077, 1087, 1097, and 1127 correspond to observations of the satellite constellations GPS, GLONASS, Galileo and BeiDou, respectively.

•
Message 1230 provides the code/phase deviations of the GLONASS constellation. In this constellation, each satellite emits a different frequency, and this makes the solving of ambiguity even more complex.