A connectionless GNSS data transmission method and system based on a Bluetooth broadcast channel
Patent Information
- Application Number
- CN202610079908.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2026-01-21
- Publication Date
- 2026-10-27
- Estimated Expiration
- 2046-01-21
AI Technical Summary
由于框架不同,同一地点的坐标数值可能存在偏差,当设备在多个系统间频繁切换时,这种偏差会破坏无连接GNSS数据传输过程中定位结果的连续性,进而影响用户体验
[0035]本发明公开了一种基于蓝牙广播信道的无连接GNSS数据传输方法及系统,针对多卫星导航系统切换时由于不同地心坐标基准面参数差异导致的定位坐标跳变问题,通过实时比对前后定位点的卫星系统标识,智能识别基准面不一致情况,并在切换发生时自动提取椭球参数差异,完成三轴平移、旋转及尺度变换,将当前坐标统一转换至与前一点相同的基准面坐标系下,有效消除系统切换引起的原始坐标突变;同时结合采集时间差与合理位移阈值进行跳变检测,对异常高跳变点沿运动趋势以等时间间隔插值生成平滑过渡的中间补点,最终形成基准面统一、轨迹连续的定位点集合,并以统一基准面标识封装后通过蓝牙广播无连接发送给移动终端。本发明显著提高了多源GNSS融合定位在复杂切换场景下的轨迹连续性与平滑度,有效避免了因基准面差异造成的轨迹断裂与位置抖动,提升了低功耗设备实时轨迹应用的稳定性和可靠性。
Smart Images

Figure CN121888359B_ABST
Abstract
Description
Technical Field
[0001] This invention relates to the field of information technology, and in particular to a connectionless GNSS data transmission method and system based on a Bluetooth broadcast channel. Background Technology
[0002] In the field of modern positioning technology, Global Navigation Satellite Systems (GNSS) are a core technology for achieving high-precision location services, encompassing multiple satellite navigation systems such as the US GPS, China's BeiDou, Russia's GLONASS, and the EU's Galileo. Connectionless GNSS data transmission based on Bluetooth broadcast channels has become an important direction for improving location services on mobile devices. This technology has irreplaceable value in scenarios such as transportation, logistics, and personal navigation, especially in achieving efficient transmission of GNSS positioning data without a continuous connection, demonstrating its enormous potential in resource conservation and real-time performance. However, in complex real-world environments, particularly urban canyons or transitional areas between indoor and outdoor spaces, while this connectionless GNSS data transmission can provide basic location data, it often faces problems such as signal interference and multipath effects, making it difficult to guarantee the stability and continuity of positioning results. Meanwhile, in outdoor high-precision positioning, the combined use of multiple satellite navigation systems has become a mainstream trend, integrating signals from different GNSS systems to improve coverage and positioning accuracy. However, this multi-system joint positioning also brings new challenges, mainly manifested in the inconsistency of positioning results that can easily occur during dynamic switching between different satellite systems due to differences in their underlying framework settings. For example, when a mobile device moves from one area to another, the received signal may switch from one satellite system to another. If the differences between systems are not fully considered, the positioning trajectory will exhibit unnatural fluctuations or interruptions. This phenomenon is particularly noticeable during user movement and can severely impact the navigation experience. Further analysis reveals subtle differences in the coordinate reference planes used by different GNSS satellite systems. These reference planes are the frames used by each system to define Earth's position, including the parameters of the reference ellipsoid and the implementation of the frame. Due to these different frames, the coordinate values of the same location may deviate. When a device frequently switches between multiple systems, this deviation disrupts the continuity of positioning results during connectionless GNSS data transmission, thus affecting the user experience. For instance, in an urban navigation scenario, as a user moves from one area to another, the device may switch from one satellite system to another due to signal strength differences. If the differences in coordinate reference planes are not addressed, noticeable jumps will appear on the navigation trajectory, as if the user has suddenly "teleported" several meters or even tens of meters. This discontinuous trajectory presentation can mislead users in judging direction or distance. Furthermore, in applications such as logistics tracking or autonomous driving assistance, this jumping phenomenon amplifies the problem, as a continuous and smooth trajectory is fundamental to ensuring accurate decision-making. Any interruption or fluctuation will affect the overall system reliability. Therefore, how to dynamically adapt to differences in coordinate reference planes during system switching in connectionless GNSS data transmission, and ensure a smooth transition of the movement trajectory in both visual and data terms, has become a critical issue that urgently needs to be addressed. Summary of the Invention
[0003] This invention provides a connectionless GNSS data transmission method based on a Bluetooth broadcast channel, mainly comprising:
[0004] GNSS data transmission messages are received via Bluetooth broadcast channel. The satellite system identifier, raw longitude, raw latitude, and ellipsoidal altitude of the current positioning point are extracted to obtain the coordinate data packet for the current positioning point. The satellite system identifier in the coordinate data packet is compared with the satellite system identifier of the previous positioning point to determine the satellite navigation system type corresponding to the two identifiers. Simultaneously, the geocentric coordinate reference surface type used by each is identified, and the reference surface difference type and conversion parameters between reference surfaces are marked to obtain a system switching mark. For positioning points with a system switching mark indicating that the system has switched, the raw longitude, raw latitude, and ellipsoidal altitude are extracted from the coordinate data packet. The system identifies the geocentric coordinate reference surface type used by the current satellite system and adjusts the original longitude, original latitude, and ellipsoidal altitude from the current reference surface to adjusted longitude, latitude, and ellipsoidal altitude in the same coordinate system as the previous fixed point. Based on the adjusted longitude and latitude, it assesses position jumps, identifies the difference between the horizontal displacement and the expected normal displacement, and marks high jumps or low continuity. For positioning points marked with high jumps, it identifies the direction of movement between breakpoints and the span of breakpoints based on the difference in longitude and latitude between the previous fixed point and the current positioning point in the same reference surface coordinate system.
[0005] The longitude, latitude, and ellipsoidal height of several intermediate positioning points within the breakpoint span are generated and integrated with the adjusted longitude, adjusted latitude, and adjusted ellipsoidal height to form a continuous trajectory point set. The continuous trajectory point set is encapsulated into a GNSS data transmission message, with the current reference surface identification information attached, and transmitted to the mobile terminal via Bluetooth broadcast channel.
[0006] Furthermore, by comparing the satellite system identifier in the coordinate data packet with the satellite system identifier at the previous fixed position, the satellite navigation system type corresponding to the two identifiers is determined, the geocentric coordinate reference surface type used by each is simultaneously identified, the reference surface difference type and the conversion parameters between reference surfaces are marked, and a system switching marker is obtained, including:
[0007] Extract the satellite system identification code from the current coordinate data packet, and perform a byte-level comparison with the cached satellite system identification code of the previous location to determine that a satellite navigation system switch has occurred, and obtain the system switch status;
[0008] Based on the system switching status, when it is determined that a switch has been made, the preset reference plane parameter lookup table is queried according to the system identification codes before and after the switch. The conversion parameters of the corresponding reference plane combination are extracted from the lookup table, including X-axis translation, Y-axis translation, Z-axis translation, X-axis rotation angle, Y-axis rotation angle, Z-axis rotation angle and scale scaling factor, to form a reference plane conversion parameter set.
[0009] A system switching flag is generated based on the numerical values of each parameter in the reference plane conversion parameter set.
[0010] Furthermore, for the positioning points marked as switched by the system, the original longitude, original latitude, and ellipsoidal altitude are extracted from the coordinate data packet. The type of geocentric coordinate reference surface used by the current satellite system is identified, and the original longitude, original latitude, and ellipsoidal altitude are adjusted from the current reference surface to adjusted longitude, latitude, and ellipsoidal altitude in the same coordinate system as the previous positioning point. This includes:
[0011] When the state is marked as switched, the original longitude value, original latitude value, and ellipsoidal height value are extracted from the longitude field, latitude field, and height field of the coordinate data packet, respectively. The reference surface type mapping table is queried according to the current satellite system identifier to obtain the name of the geocentric coordinate reference surface currently used.
[0012] Read the reference surface type of the previous fixed point, match the name of the currently used geocentric coordinate reference surface with the reference surface type of the previous fixed point, query the pre-stored reference surface transformation parameter table, extract the transformation parameters from the source reference surface to the target reference surface, and form a reference surface transformation parameter set;
[0013] Using the aforementioned reference surface transformation parameter set, the original longitude, original latitude, and ellipsoidal height are converted from geodetic coordinates to spatial rectangular coordinates to obtain the original X, Y, and Z coordinate values. Translation, rotation, and scaling transformations are then performed on the original X, Y, and Z coordinate values in sequence. Finally, the transformed spatial rectangular coordinates are converted back to geodetic coordinates using the inverse transformation formula to obtain the adjusted longitude, adjusted latitude, and adjusted ellipsoidal height.
[0014] Furthermore, the original longitude, original latitude, and ellipsoidal altitude are adjusted from the current reference plane to adjusted longitude, latitude, and ellipsoidal altitude in the same coordinate system as the previous fixed point. This includes: extracting angle values from the original longitude and original latitude; identifying the spatial position under the current reference plane; translating the spatial position along the three axes to the origin of the target reference plane according to the three-axis offset; adjusting the orientation of the spatial position by applying the three-axis rotation angle; correcting the distance scale of the spatial position by applying the scale scaling factor; and recalculating the converted spatial position.
[0015] Adjusted longitude and adjusted latitude. Further, the original longitude, original latitude, and ellipsoidal altitude are adjusted from the current reference plane to adjusted longitude, latitude, and adjusted ellipsoidal altitude in the same coordinate system as the previous fixed point, including:
[0016] Based on longitude λ, latitude φ, and ellipsoidal height h, spatial rectangular coordinates are calculated using formulas to obtain the three-dimensional spatial coordinates under the current reference plane;
[0017] Read the pre-stored X-axis translation, Y-axis translation, and Z-axis translation, add the corresponding translation to the X, Y, and Z components of the three-dimensional spatial coordinates respectively, and perform a translation transformation of the coordinate origin;
[0018] Extract the rotation angles around the X-axis, Y-axis, and Z-axis, construct a rotation matrix, and perform coordinate rotation through matrix multiplication;
[0019] Multiply the rotated coordinates by a scaling factor to correct the scale difference between the two reference planes, and then calculate the adjusted longitude, adjusted latitude, and adjusted ellipsoidal height using the inverse calculation formula.
[0020] Furthermore, based on the adjusted latitude and longitude and the latitude and longitude of the previous fixed point, a positional jump assessment is performed to identify the difference between the horizontal displacement and the expected normal displacement, and to mark high jump markers or low continuity markers, including:
[0021] Calculate the spherical distance between the adjusted longitude and latitude and the longitude and latitude of the previous fixed point. Calculate the horizontal displacement based on the radian value of the difference between the Earth's average radius and the longitude and latitude of the two points to obtain the actual displacement distance.
[0022] The time difference of data collection is obtained by subtracting the timestamp of the previous location from the timestamp of the current location. The time difference of data collection is multiplied by the preset upper limit of the moving speed per unit time. The corresponding upper limit of speed is read according to the type of moving vehicle, and the expected normal displacement is calculated.
[0023] The displacement ratio is obtained by dividing the actual displacement distance by the expected normal displacement. When the displacement ratio exceeds a preset multiple threshold, a high jump mark is generated. When the displacement ratio is within the preset multiple threshold range, a low continuity mark is generated.
[0024] Furthermore, for the positioning points of high jump markers, based on the same reference plane coordinate system, the movement orientation between breakpoints is identified according to the longitude and latitude differences between the previous fixed point and the current positioning point, and the span of the breakpoints is identified, including:
[0025] Extract the current longitude and latitude values from the positioning point of the high jump marker, calculate the difference between the longitude and latitude values of the previous positioning point, calculate the azimuth angle, convert the azimuth angle into degree representation, and obtain the movement orientation between the breakpoints;
[0026] Based on the motion orientation, subtract the timestamp of the previous fixed point from the timestamp of the current fixed point to calculate the time interval between the two fixed points, and convert the time interval into seconds to obtain the breakpoint time span value.
[0027] Based on the breakpoint time span value, the preset interpolation parameter table is queried to obtain the corresponding interpolation time interval and the maximum interpolation quantity threshold, and the breakpoint span is determined.
[0028] Furthermore, the longitude, latitude, and ellipsoidal altitude of several intermediate positioning points within the breakpoint span are generated and integrated with the adjusted longitude, adjusted latitude, and adjusted ellipsoidal altitude to form a continuous trajectory point set, including:
[0029] Based on the breakpoint span and breakpoint time span value, divide the time span value by the breakpoint span to obtain the unit time interval. Based on the latitude and longitude difference between the previous fixed point and the current fixed point and the breakpoint span, calculate the longitude step and latitude step of each interpolation point. Starting from the latitude and longitude of the previous fixed point, accumulate the step amount sequentially to obtain the longitude sequence and latitude sequence of each intermediate fixed point.
[0030] Based on the longitude sequence and the latitude sequence, the difference between the ellipsoidal height of the previous fixed point and the ellipsoidal height of the current fixed point is calculated. The height difference is divided by the span of the breakpoint to obtain the unit elevation change. Starting from the ellipsoidal height of the previous fixed point, the unit elevation change is accumulated sequentially according to the linear interpolation method to obtain the ellipsoidal height sequence of each intermediate fixed point.
[0031] The longitude, latitude, and ellipsoidal height sequences of each intermediate positioning point are combined in chronological order to form a complete positioning point list. The complete positioning point list is then merged with the adjusted longitude, adjusted latitude, and adjusted ellipsoidal height, and expressed based on the same geocentric coordinate reference surface to obtain a continuous trajectory point set.
[0032] Furthermore, the continuous set of trajectory points is encapsulated into a GNSS data transmission message, including the current reference surface identification information, and transmitted to the mobile terminal via a Bluetooth broadcast channel, including:
[0033] The continuous trajectory point set is serialized according to the preset message format, and a synchronization byte is added as the message header. The timestamp, longitude, latitude and ellipsoidal height data of each positioning point are written sequentially in the message body. A unified reference surface identifier code and checksum are appended to the end of the message to obtain the encapsulated GNSS data transmission message. The message is then sent via Bluetooth Low Energy broadcast data packets. The broadcast interval and broadcast power level are set, and the message data is sent in turn on the preset broadcast channel.
[0034] This invention provides a connectionless GNSS data transmission system based on a Bluetooth broadcast channel, mainly comprising: a Bluetooth broadcast receiving module, used to receive GNSS data transmission messages through the Bluetooth broadcast channel, extract the satellite system identifier, original longitude, original latitude, and ellipsoidal altitude of the current positioning point, and obtain a coordinate data packet of the current positioning point; a satellite system identifier comparison module, used to compare the satellite system identifier in the coordinate data packet with the satellite system identifier of the previous positioning point, determine the satellite navigation system type corresponding to the two identifiers, synchronously identify the geocentric coordinate reference surface type used by each, mark the reference surface difference type and the conversion parameters between reference surfaces, and obtain a system switching mark; and a coordinate reference surface conversion module, used for positioning points whose system switching mark is switched, to extract the original longitude, original latitude, and ellipsoidal altitude from the coordinate data packet, identify the geocentric coordinate reference surface type used by the current satellite system, and convert the original longitude, original latitude, and ellipsoidal altitude into a coordinate reference surface. The system adjusts the latitude, longitude, and ellipsoidal height of the current reference plane to the same coordinate system as the previous fixed point. A position jump assessment module evaluates the position jump based on the adjusted latitude and longitude of the previous fixed point, identifies the difference between the horizontal displacement and the expected normal displacement, and marks high jump points or low continuity points. A motion orientation identification module identifies the motion orientation between breakpoints for high jump point locations based on the difference in longitude and latitude between the previous fixed point and the current location point, within the same reference plane coordinate system, and identifies the breakpoint span. A trajectory point generation module generates the longitude, latitude, and ellipsoidal height of several intermediate location points within the breakpoint span, integrates them with the adjusted longitude, adjusted latitude, and adjusted ellipsoidal height to form a continuous trajectory point set. A data transmission encapsulation module encapsulates the continuous trajectory point set into a GNSS data transmission message, attaching the current reference plane identification information, and transmits it to the mobile terminal via a Bluetooth broadcast channel. The technical solution provided by this embodiment of the invention can include the following beneficial effects:
[0035] This invention discloses a connectionless GNSS data transmission method and system based on a Bluetooth broadcast channel. Addressing the issue of positioning coordinate jumps caused by differences in geocentric coordinate reference plane parameters during multi-satellite navigation system switching, the method intelligently identifies inconsistencies in the reference plane by comparing the satellite system identifiers of the previous and subsequent positioning points in real time. Upon switching, it automatically extracts ellipsoidal parameter differences and performs three-axis translation, rotation, and scaling transformations to uniformly convert the current coordinates to the same reference plane coordinate system as the previous point, effectively eliminating abrupt changes in the original coordinates caused by system switching. Simultaneously, it performs jump detection by combining the acquisition time difference and a reasonable displacement threshold. For abnormally high jump points, it interpolates at equal time intervals along the motion trend to generate smooth transition intermediate points, ultimately forming a set of positioning points with a unified reference plane and continuous trajectory. This set is then encapsulated with a unified reference plane identifier and transmitted connectionlessly to the mobile terminal via Bluetooth broadcast. This invention significantly improves the trajectory continuity and smoothness of multi-source GNSS fusion positioning in complex switching scenarios, effectively avoiding trajectory breaks and position jitter caused by reference plane differences, and enhancing the stability and reliability of real-time trajectory applications on low-power devices. Attached Figure Description
[0036] Figure 1 This is a flowchart of a connectionless GNSS data transmission method based on a Bluetooth broadcast channel according to the present invention.
[0037] Figure 2 This is a schematic diagram of a connectionless GNSS data transmission method based on a Bluetooth broadcast channel according to the present invention.
[0038] Figure 3 This is a schematic diagram of the structure of a connectionless GNSS data transmission system based on a Bluetooth broadcast channel according to the present invention. Detailed Implementation
[0039] To enable those skilled in the art to better understand the technical solutions in this specification, the technical solutions in the embodiments of this specification will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of this specification, and not all embodiments. Based on the embodiments in this specification, all other embodiments obtained by those skilled in the art without creative effort should fall within the scope of protection of this specification.
[0040] like Figures 1-3 This embodiment of a connectionless GNSS data transmission method and system based on a Bluetooth broadcast channel may specifically include:
[0041] S101. Receive GNSS data transmission messages through the Bluetooth broadcast channel, extract the satellite system identifier, original longitude, original latitude, and ellipsoidal altitude of the current positioning point, and obtain the coordinate data packet of the current positioning point.
[0042] The system monitors the data stream of the Bluetooth broadcast channel, detects the synchronization header consisting of the message start flags 0xB5 and 0x62, reads the payload length value consisting of the 4th and 5th bytes after the synchronization header, and reads the complete data frame by adding the payload length to the fixed length of the message header and footer (8 bytes) to obtain the GNSS message to be parsed. The GNSS message to be parsed is parsed according to the UBX protocol format. The satellite system identifier is read from the 6th byte. If the identifier is 0x01, it is determined to be a GPS system; if it is 0x02, it is determined to be a BeiDou system; if it is 0x03, it is determined to be a GLONASS system. Starting from the 14th byte, 8 bytes are read continuously and converted to double-precision floating-point numbers to obtain the raw longitude value. Starting from the 22nd byte, 8 bytes are read continuously and converted to double-precision floating-point numbers to obtain the raw latitude value. Starting from the 30th byte, 4 bytes are read continuously and converted to single-precision floating-point numbers to obtain the ellipsoidal altitude value. The satellite system identifier, raw longitude, raw latitude, and ellipsoidal altitude value are encapsulated into a coordinate data packet of the current positioning point.
[0043] In one embodiment, the Bluetooth broadcast channel uses the BLE protocol's advertising channel for data transmission. By configuring the Bluetooth module's scanning parameters, the scanning window is set to 10.24 milliseconds, and the scanning interval to 30 milliseconds, continuously monitoring GNSS data broadcasts on advertising channels 37, 38, and 39. When the message start flags 0xB5 and 0x62 are detected, it is identified as an UBX protocol format GNSS message, and the message reception process is initiated. The UBX protocol is a binary protocol format defined by u-blox. Its message structure includes a synchronization character, message category, message identifier, payload length, payload data, and checksum. The 4th and 5th bytes after the synchronization header store the payload length in little-endian byte order. The two bytes are combined into a 16-bit unsigned integer through bitwise operations. Adding the fixed 6-byte message header and 2-byte checksum, the total length of the complete message is obtained. Based on the calculated total length, the corresponding number of bytes of data are continuously read from the Bluetooth buffer to form the GNSS message to be parsed, avoiding message truncation or data loss.
[0044] S102. Compare the satellite system identifier in the coordinate data packet with the satellite system identifier of the previous fixed position, determine the satellite navigation system type corresponding to the two identifiers, synchronously identify the geocentric coordinate reference surface type used by each, mark the reference surface difference type and the conversion parameters between reference surfaces, and obtain the system switching mark.
[0045] The satellite system identifier is extracted from the current coordinate data packet and compared byte-by-byte with the previous satellite system identifier at a previous location. If the current identifier is 0x01 (representing GPS) and the previous identifier is 0x03 (representing BeiDou), or the previous identifier is 0x06 (representing GLONASS), then a satellite navigation system switch is determined, and the system switch status is obtained. Based on the system switch status, when a switch is determined, a preset reference surface parameter lookup table is consulted according to the system identifiers before and after the switch. The GPS system uses the WGS84 reference surface, the BeiDou system uses the CGCS2000 reference surface, and the GLONASS system uses the PZ90.11 reference surface. The conversion parameters for the corresponding reference surface combination are extracted from the lookup table, including seven parameters: X-axis translation, Y-axis translation, Z-axis translation, X-axis rotation angle, Y-axis rotation angle, Z-axis rotation angle, and scale factor, to determine the reference surface conversion parameter set. Based on the numerical values of each parameter in the reference plane conversion parameter set, if the absolute value of any of the X, Y, and Z axis translations exceeds 5 meters, or the rotation angle exceeds 0.001 radians, or the difference between the scale factor and 1 exceeds 0.00001, a high-difference system switching flag is generated; otherwise, a low-difference system switching flag is generated.
[0046] In one embodiment, satellite system identification codes are quickly compared using bitwise operations. Upon receiving a new coordinate data packet, the current satellite system identification code is read from the 6th byte of the data packet, and simultaneously, the satellite system identification code of the previous location is retrieved from the local cache. An XOR operation is performed; if the result is non-zero, it indicates that the two identification codes are different, and a switch to a different satellite navigation system has occurred. Different satellite navigation systems use slightly different geocentric coordinate reference surfaces. The WGS84 reference surface uses the Earth's center of mass as its origin, with a semi-major axis of its reference ellipsoid of 6,378,137 meters and an flattening of 1 / 298.257223563. While the CGCS2000 reference surface is essentially consistent with WGS84 in definition, differences at the time of its implementation lead to millimeter-level differences. The PZ90.11 reference surface is a coordinate system independently established by Russia, and its ellipsoid parameters differ from WGS84 by meters; such differences are not negligible in high-precision positioning applications. A reference surface parameter lookup table pre-stores the conversion parameters for various reference surface combinations. The seven parameters include three translation parameters, three rotation parameters, and one scale parameter. These parameters achieve coordinate transformation between different reference planes through the Bursa-Wolf transformation model.
[0047] For example, when converting from WGS84 to CGCS2000, the X-axis translation is approximately 0.01 meters, the Y-axis translation is approximately -0.02 meters, and the Z-axis translation is approximately 0.03 meters. All three rotation angles are less than 0.0001 radians, and the scale factor is close to 1.0. However, when converting from WGS84 to PZ90.11, the X-axis translation reaches -1.443 meters, the Y-axis translation is -0.156 meters, and the Z-axis translation is -0.222 meters, with relatively larger rotation and scale parameters.
[0048] Preferably, the generation of system switching markers employs a hierarchical judgment mechanism. When a translational amount exceeding 5 meters is detected in the datum transformation parameters, it indicates a significant systematic deviation between the two datums. In this case, a high-difference system switching marker is generated, prompting the subsequent processing module to perform a complete seven-parameter coordinate transformation. When all parameters are within the threshold range, a low-difference system switching marker is generated, and a simplified three-parameter transformation or direct neglect of datum differences can be used subsequently. This hierarchical processing mechanism reduces unnecessary computational overhead while ensuring positioning accuracy.
[0049] The geocentric coordinate reference surface used by the satellite system is determined based on the satellite system identifier. The length of the semi-major axis and the flattening of the ellipsoid of the reference surface are identified. The offset of the origin of the reference surface relative to the geocenter is obtained. The difference in ellipsoidal parameters between the current reference surface and the previous reference surface at a certain location is evaluated. The rotation angle and scale factor between the reference surfaces are determined.
[0050] The system type code is extracted from the high 4 bits of the satellite system identifier, and the version number is extracted from the low 4 bits. Based on the system type code, the reference surface configuration table is queried to obtain the corresponding geocentric coordinate reference surface name. The reference surface name is indexed into the ellipsoid parameter library to read the semi-major axis and flattening values of the ellipsoid, thus obtaining the current system's ellipsoid parameter set. Based on this ellipsoid parameter set, the X-axis, Y-axis, and Z-axis offset values of the reference surface origin relative to the geocenter are read from the origin field of the reference surface configuration table. These three offset values are combined to form the reference surface origin offset vector. Simultaneously, the ellipsoid parameter set and the reference surface origin offset vector of the previous fixed location are extracted from the cache. The current ellipsoid parameter set is compared with the ellipsoid parameter set of the previous fixed location, and the differences in the semi-major axes and flattening of the two ellipsoids are calculated. The difference between the current reference surface origin offset vector and the reference surface origin offset vector of the previous fixed location is calculated. Based on the absolute values of the semi-major axis difference, flattening difference, and offset vector difference, the degree of difference in the ellipsoid parameters of the two reference surfaces is evaluated. Based on the degree of difference in the ellipsoid parameters, when the degree of difference exceeds a preset threshold, the Helmert seven-parameter transformation method is adopted. Using the ellipsoid parameters of the two reference planes and the origin offset vector, the three Euler rotation angles around the X-axis, Y-axis, and Z-axis, as well as the scale scaling factor between the two reference planes, are calculated to determine the rotation angle and scale scaling factor between the reference planes.
[0051] In one embodiment, the satellite system identifier uses an 8-bit binary encoding structure, where the high 4 bits define the system type code and the low 4 bits define the version number. System type code 0001 corresponds to the GPS system, 0010 to the BeiDou system, 0011 to the GLONASS system, and 0100 to the Galileo system. The version number is used to distinguish different generations of the same satellite system; for example, BeiDou-2 and BeiDou-3 correspond to different version numbers. The 8-bit identifier code is separated into two parts through a shift operation. The system type code is obtained by shifting it 4 bits to the right, and the version number is obtained by performing a bitwise AND operation with 0x0F. The reference surface configuration table is a pre-built lookup table structure that stores the geocentric coordinate reference surface information used by each satellite navigation system. The configuration table includes fields such as system type code, reference surface name, ellipsoid parameter index, and origin offset value. When the system type code is 0001, the configuration table returns the WGS84 datum name; when the system type code is 0010, it returns the CGCS2000 datum name; and when the system type code is 0011, it returns the PZ90.11 datum name. The datum name serves as an index key for retrieving the corresponding ellipsoidal geometric parameters from the ellipsoidal parameter library. The ellipsoidal parameter library stores the geometric parameters of the reference ellipsoid used for each datum. The semi-major axis of the ellipsoid represents the distance from the Earth's center to the equator. The semi-major axis of WGS84 and CGCS2000 is 6,378,137.0 meters, while that of PZ90.11 is 6,378,136.0 meters, a difference of 1 meter. Flattening is defined as the ratio of the difference between the semi-major and semi-minor axes to the semi-major axis, reflecting the degree of flattening of the Earth's ellipsoid. The flattening of WGS84 is 1 / 298.257223563, the same as that of CGCS2000, while the flattening of PZ90.11 is 1 / 298.25784. These minute differences can have observable effects in high-precision positioning. After reading these two core parameters from the ellipsoid parameter library, they are combined to form the ellipsoid parameter set of the current system, providing the basic parameters for subsequent coordinate transformations.
[0052] In one possible implementation, the extraction of the datum origin offset vector involves the difference in the coordinate frame origins. Although theoretically each datum has its origin at the Earth's center of mass, the actual frame origins can deviate by meters due to differences in establishment time, observation data, and processing methods. The datum configuration table stores the three-dimensional offset values of each datum origin relative to the International Earth Reference Frame.
[0053] For example, PZ90.11 is offset by approximately -0.36 meters in the X-axis direction, approximately 0.08 meters in the Y-axis direction, and approximately 0.18 meters in the Z-axis direction relative to WGS84. These three offset values are read and combined to form a three-dimensional offset vector. Simultaneously, the ellipsoidal parameter set corresponding to the previous fixed position and the datum origin offset vector are extracted from the local cache to prepare for parameter comparison.
[0054] Preferably, the assessment of the degree of difference in ellipsoidal parameters adopts a multi-dimensional comprehensive judgment method. The difference in the semi-major axis directly affects the radial distance of the positioning point. When the semi-major axes of two ellipsoids differ by 1 meter, the same order of magnitude of elevation error will occur near the equator. The difference in flattening affects latitude-related positioning accuracy. The greater the difference in flattening, the more obvious the positioning deviation in high-latitude regions. The difference in the origin offset vector reflects the systematic translation relationship between the two reference planes. The comprehensive offset is obtained by calculating the Euclidean distance between the two offset vectors. When the difference in the semi-major axis exceeds 0.5 meters, the difference in flattening exceeds 0.00001, or the comprehensive offset exceeds 1 meter, it is judged as a high degree of difference; otherwise, it is a low degree of difference.
[0055] For example, the Helmert seven-parameter transformation method is a classic approach for achieving accurate transformations between different reference planes. This method establishes a transformation relationship between two three-dimensional Cartesian coordinate systems using three translation parameters, three rotation parameters, and one scale parameter. In practical applications, the ellipsoidal parameters and the origin offset vector are first converted to Cartesian coordinate form, and then a transformation matrix is constructed. The rotation parameters are typically small, measured in radians; the rotation angle around the X-axis is approximately 0.00001 radians, and the rotation angles around the Y and Z axes are also on the order of magnitude. The scale factor is close to 1.0, with deviations typically on the order of parts per million, reflecting the scale difference between the two reference planes. When the difference in ellipsoidal parameters is high, the specific values of the seven parameters are determined through iterative calculation. An initial transformation matrix is constructed using the ellipsoidal parameters of the two reference planes, and initial values of the translation parameters are calculated based on the origin offset vector. A parameter correction equation is established using the Jacobian matrix, and the parameter values are iteratively optimized until the residual is less than a preset threshold. In each iteration, the system updates the rotation matrix and scale factor, recalculates the transformed coordinates, and evaluates the deviation from the target reference plane.
[0056] For example, when switching from the GPS WGS84 datum to the BeiDou CGCS2000 datum, since the ellipsoidal parameters are basically the same, the main difference lies in the different periods when the framework was implemented. At this time, the three rotation angles are all less than 0.0001 radians, the scale factor is about 1.0000001, and the translation parameters are in the centimeter range. However, when switching from WGS84 to GLONASS PZ90.11, due to the significant difference in ellipsoidal parameters, a complete seven-parameter transformation is required, with translation parameters reaching the meter level, and the rotation and scale parameters also being relatively large. Furthermore, the determined rotation angles and scale factors are encapsulated as transformation parameter groups and stored in the system cache. These parameters are reused in subsequent coordinate transformations to avoid redundant calculations. When encountering the same datum switch again, the transformation parameters are directly read from the cache, improving processing efficiency.
[0057] S103. For the positioning points marked as switched by the system, extract the original longitude, original latitude, and ellipsoidal altitude from the coordinate data packet, identify the geocentric coordinate reference surface type used by the current satellite system, and adjust the original longitude, original latitude, and ellipsoidal altitude from the current reference surface to the adjusted longitude, latitude, and ellipsoidal altitude in the same coordinate system as the previous positioning point.
[0058] Check for high-difference system switching markers. If so, extract the original longitude, original latitude, and ellipsoidal altitude values from the longitude, latitude, and altitude fields of the coordinate data packet, respectively. Query the reference surface type mapping table based on the current satellite system identifier to obtain the name of the currently used geocentric coordinate reference surface. Read the reference surface type of the previous fixed location from the cache, match the name of the currently used geocentric coordinate reference surface with the reference surface type of the previous fixed location, query the pre-stored reference surface transformation parameter table, and extract the transformation parameters from the source reference surface to the target reference surface. These parameters include seven values: X-axis translation, Y-axis translation, Z-axis translation, X-axis rotation angle, Y-axis rotation angle, Z-axis rotation angle, and scale factor, forming a reference surface transformation parameter set. Using the aforementioned reference surface transformation parameter set, the original longitude, original latitude, and ellipsoidal height are converted from geodetic coordinates to spatial rectangular coordinates using the conversion formula to obtain the original X, Y, and Z coordinate values. Translation, rotation, and scaling transformations are then performed on the original coordinate values in sequence. The translation transformation is achieved by adding three translation amounts, the rotation transformation is achieved by constructing a rotation matrix using three rotation angles, and the scaling transformation is achieved by multiplying by a scaling factor. Finally, the transformed spatial rectangular coordinates are converted back to geodetic coordinates using the inverse transformation formula to obtain the adjusted longitude, adjusted latitude, and adjusted ellipsoidal height.
[0059] In one embodiment, a coordinate transformation process is triggered when a system switching marker with high differences is detected. The latitude and longitude fields in the coordinate data packet are stored in double-precision floating-point format, with longitude ranging from -180 to 180 degrees and latitude ranging from -90 to 90 degrees. The ellipsoidal altitude is stored in meters. A reference surface type mapping table establishes the correspondence between satellite system identifiers and reference surface names. Through table lookup operations, the coordinate frame on which the current positioning data is based can be quickly determined.
[0060] For example, GPS data corresponds to the WGS84 datum, BeiDou data to the CGCS2000 datum, and GLONASS data to the PZ90.11 datum. This mapping relationship is pre-loaded into memory during system initialization. The conversion from geodetic coordinates to spatial rectangular coordinates involves the application of ellipsoid parameters. In the conversion formula, the radius of curvature N of the prime mover is calculated using the semi-major axis a and the first eccentricity e of the ellipsoid. φ represents latitude. Spatial rectangular coordinates. Where λ is longitude and h is ellipsoidal height. This transformation maps spherical coordinates to a three-dimensional Cartesian coordinate system, providing the basis for the subsequent seven-parameter transformation.
[0061] Preferably, the seven-parameter transformation is performed in a specific order. The translation transformation is achieved by adding the corresponding translation amount to the original coordinate values. Rotational transformations are achieved by constructing a rotation matrix R, which consists of three Euler angles. , , The system is composed of a small-angle approximation, and the rotation matrix can be simplified to an identity matrix plus an antisymmetric matrix. Scale transformation is achieved by multiplying by a scale factor (1+s), where s is the scale parameter, typically on the order of one millionth. The transformed coordinates are then converted back to geodetic coordinates using the inverse transformation formula to obtain the adjusted latitude, longitude, and ellipsoidal altitude.
[0062] One possible implementation uses a caching mechanism to store transformation parameters. When a specific combination of reference surfaces is encountered for the first time, the seven parameters are read from the parameter table and stored in the cache; when the same combination is encountered again, it is read directly from the cache, reducing table lookup overhead. This mechanism can effectively improve processing efficiency in scenarios with frequent switching of satellite systems.
[0063] The angle values are extracted from the original longitude and latitude, the spatial position under the current reference plane is identified, the spatial position is translated to the origin of the target reference plane along the three-axis direction according to the three-axis offset, the orientation of the spatial position is adjusted by applying the three-axis rotation angle, the distance scale of the spatial position is corrected by applying the scale scaling factor, and the converted spatial position is back-calculated into the adjusted longitude and adjusted latitude.
[0064] The integer degree portion is separated from the original longitude and latitude floating-point values. The remaining decimal part is multiplied by 60 to obtain the integer minute portion. The remaining decimal part is then multiplied by 60 again to obtain the second portion. The degree, minute, and second values are stored separately. Combined with the ellipsoidal height value, the spatial rectangular coordinates (X, Y, Z) are calculated using the formula based on longitude λ, latitude φ, and ellipsoidal height h, where N is the radius of curvature of the prime mover and e is the first eccentricity, thus obtaining the three-dimensional spatial coordinates under the current reference plane. Based on the three-dimensional spatial coordinates, the pre-stored X-axis translation ΔX, Y-axis translation ΔY, and Z-axis translation ΔZ are read. ΔX is added to the X component, ΔY to the Y component, and ΔZ to the Z component of the spatial coordinates. A translation transformation of the coordinate origin is performed to obtain the translated coordinates. For the translated coordinates, the rotation angles εx around the X-axis, εy around the Y-axis, and εz around the Z-axis are extracted, and a rotation matrix R is constructed. Matrix multiplication is then used to... Perform coordinate rotation to adjust the spatial position's orientation under the target reference plane, obtaining the rotated coordinates. Multiply the rotated coordinates by a scale factor (1+s), where s is a scale parameter, to correct for scale differences between the two reference planes, using an inverse calculation formula. Calculate latitude, Calculate longitude, Calculate the ellipsoidal height to obtain the adjusted longitude and adjusted latitude.
[0065] In one embodiment, the raw latitude and longitude data is typically stored in decimal degree format, such as 116.3974 degrees east longitude and 39.9093 degrees north latitude. The degree-minute-second format conversion is achieved through mathematical decomposition: the integer part is directly used as the degree, the fractional part is multiplied by 60 to obtain the integer part as the minute, and the remaining fractional part is multiplied by 60 to obtain the second.
[0066] For example, 116.3974 degrees is converted to 116 degrees 23 minutes 50.64 seconds. This format conversion is of great significance in traditional surveying and navigation displays, facilitating manual reading and recording. The radius of curvature N of the ramusoidal circle is the distance between the normal to a point on the ellipsoid and the minor axis of the ellipsoid, and its calculation formula is: Where a is the semi-major axis of the ellipsoid, e is the first eccentricity, and φ is the latitude. The first eccentricity e is calculated from the ellipsoidal flattening f. For the WGS84 ellipsoid, a = 6378137 meters, f = 1 / 298.257223563, and we calculate e² ≈ 0.00669438. The radius of curvature of the prime meridian reaches its maximum value at the equator, equal to the semi-major axis 'a', and reaches its minimum value at the poles. This parameter directly affects the accuracy of the conversion from geodetic coordinates to spatial rectangular coordinates. The conversion process involves the calculation of three coordinate components. The X-coordinate component represents the direction from the Earth's center to the intersection of the prime meridian and the equator; the Y-coordinate component represents the direction from the Earth's center to the intersection of 90 degrees east longitude and the equator; and the Z-coordinate component represents the direction from the Earth's center to the North Pole. In the conversion formula, the (N+h) term represents the total distance from the Earth's center to a point on the ellipsoid, plus the ellipsoid's altitude. , , These are the direction cosines. When the ellipsoidal height is 0, the point lies on the ellipsoid; when the ellipsoidal height is positive, the point is above the ellipsoid; and when it is negative, the point is below the ellipsoid. This transformation maps the position in the spherical coordinate system to the three-dimensional Cartesian coordinate system, providing a unified coordinate framework for the subsequent seven-parameter transformation.
[0067] Preferably, translation transformation, as the first step in the seven-parameter transformation, achieves the offset of the coordinate origin through simple vector addition. Three translation parameters are involved. , , These represent the offsets of the origins of the two coordinate systems in the X, Y, and Z directions, respectively. These offsets were obtained through coordinate comparison and least-squares fitting of a large number of control points, reflecting the different locations of the Earth's center of mass used when establishing the two reference surfaces.
[0068] In one possible implementation, the rotation transformation is achieved by constructing a 3×3 rotation matrix. Three rotation angles... , , These represent the rotations about the X, Y, and Z axes, respectively, in radians. Since these rotation angles are typically very small, on the order of milliarthseconds, a small-angle approximation can be used, i.e. , The rotation matrix R is approximately: This approximation greatly simplifies the calculation process while maintaining sufficient accuracy. The rotation transformation corrects for minor deviations in the axes of the two coordinate systems, which arise from differences in coordinate axis orientation caused by different observation periods and techniques.
[0069] For example, the scale factor reflects the scale difference between two coordinate systems and is usually expressed in the form of (1+s), where s is the scale parameter, typically in the range of 10⁻⁻⁶. 6 Order of magnitude. This scale difference may stem from different definitions of length units or subtle differences in Earth models. Scale transformation is achieved by multiplying coordinate values by a scaling factor, ensuring consistency in distance measurements between the two coordinate systems. The inverse calculation from spatial rectangular coordinates to geodetic coordinates is relatively complex. Longitude calculation is relatively simple, through... It can be obtained directly, but quadrant determination is needed to ascertain the correct angle range. Latitude calculation involves an iterative process because the latitude φ appears on both sides of the equation. The initial latitude can be obtained through... Estimate, then use iterative formulas By gradually approximating the true value, millimeter-level accuracy is typically achieved in 3-4 iterations. The ellipsoidal height h is obtained through... The calculated value represents the perpendicular distance from the point to the ellipsoid.
[0070] For example, in urban navigation scenarios, when a user moves from an area using GPS positioning into an area with stronger BeiDou signals, the system automatically switches satellite systems. After the above four-step transformation, the original GPS coordinates are converted to coordinates consistent with the BeiDou system's CGCS2000 reference plane. Although the difference between WGS84 and CGCS2000 is small, this conversion is still necessary for applications requiring centimeter-level accuracy. Precise coordinate transformation avoids jumps in the positioning trajectory, ensuring the continuity and accuracy of navigation. Furthermore, the computational accuracy of the entire conversion process is affected by several factors. Rounding errors in floating-point operations, the calculation accuracy of trigonometric functions, and the setting of iterative convergence conditions all affect the final result. In practical implementation, using double-precision floating-point numbers can guarantee sub-millimeter-level computational accuracy. Simultaneously, by reasonably setting the iterative convergence threshold, a balance is achieved between computational efficiency and accuracy.
[0071] S104. Based on the adjusted latitude and longitude and the latitude and longitude of the previous fixed position, perform position jump assessment, identify the difference between the horizontal displacement and the expected normal displacement, and mark high jump markers or low continuous markers.
[0072] The Havesing formula is used to calculate the spherical distance between the adjusted latitude and longitude and the latitude and longitude of the previous fixed point. The horizontal displacement is calculated based on the radian value of the difference between the Earth's average radius and the latitude and longitude of the two points, yielding the actual displacement distance. The acquisition time difference is obtained by subtracting the timestamp of the previous fixed point from the current positioning point's timestamp. This acquisition time difference is multiplied by a preset upper limit for movement speed per unit time. The corresponding upper limit speed value is read from a preset speed table based on the type of mobile vehicle: a first speed threshold for pedestrians and a second speed threshold for vehicles, to calculate the expected normal displacement. The actual displacement distance is divided by the expected normal displacement to obtain a displacement ratio. If the displacement ratio exceeds a preset multiple threshold, a high jump marker is generated, indicating an abnormal jump at the positioning point. If the displacement ratio is within the preset multiple threshold range, a low continuity marker is generated, indicating that the positioning trajectory remains continuous, thus obtaining the position jump assessment result.
[0073] In one embodiment, the Havesing formula is a classic method for calculating the shortest distance between two points on a sphere, particularly suitable for distance calculations on the Earth's surface. This formula takes into account the Earth's spherical shape, calculating the great circle arc length using the difference in latitude and longitude between the two points. The formula first converts latitude and longitude to radians, then calculates the half-sine value, and finally obtains the central angle using the arcsine function, multiplying it by the Earth's radius to get the actual distance. This method has high accuracy in short-to-medium distance calculations, with an error typically within 0.3%. The preset speed table is a parameter table pre-configured based on the physical characteristics of different moving vehicles. Normal walking speed for pedestrians is typically 1.2 to 1.5 meters per second, while fast walking can reach 2 meters per second; therefore, the first speed threshold is set slightly higher than the fast walking speed. The average speed of vehicles on urban roads is 30 to 40 kilometers per hour, and on highways it can reach over 100 kilometers per hour; the second speed threshold is dynamically adjusted according to the actual road environment. The calculation of the displacement ratio provides a dimensionless evaluation index. When the actual displacement distance is 100 meters and the time interval is 10 seconds, if the carrier type is a pedestrian and the speed limit is 2 meters per second, the expected normal displacement is 20 meters, and the displacement ratio is 5. This ratio far exceeds the normal range, indicating an abnormal jump in positioning. The preset multiplier threshold is usually set between 1.5 and 2, which can tolerate normal measurement errors while effectively identifying abnormal situations.
[0074] Preferably, the jump judgment can be optimized by combining historical trajectory data. By analyzing the movement trend of the previous few positioning points, a prediction model for speed and direction is established. When a new positioning point deviates significantly from the predicted trajectory, it can be marked as a potential anomaly even if the displacement ratio is within the threshold range.
[0075] In one possible implementation, high-jump markers and low-continuity markers are used not only for quality assessment of the current location but also affect subsequent trajectory processing strategies. When a high-jump marker is detected, the location can be temporarily ignored, and the previous reliable location can be used as the current position. When multiple low-continuity markers appear consecutively, it indicates that the positioning quality is stable, and the positioning update frequency can be increased.
[0076] S105. For the positioning points of high jump markers, based on the longitude difference and latitude difference between the previous fixed position point and the current positioning point under the same reference plane coordinate system, identify the movement orientation between the breakpoints and identify the span of the breakpoints.
[0077] The location points marked with high jumps are selected, and their current longitude and latitude values are extracted from these points. The difference between these values and the longitude and latitude values of the previous location is calculated using the formula... Calculate the azimuth angle and convert it to degrees to obtain the movement orientation between breakpoints. Based on the movement orientation, subtract the timestamp of the previous positioning point from the timestamp of the current positioning point to calculate the time interval between the two positioning points. Convert the time interval to seconds to obtain the breakpoint time span value. According to the breakpoint time span value, query a preset interpolation parameter table to obtain the corresponding interpolation time interval and maximum interpolation number threshold. Divide the breakpoint time span value by the interpolation time interval to obtain the theoretical interpolation number. If the theoretical interpolation number exceeds the maximum interpolation number threshold, the maximum interpolation number threshold is used; otherwise, the integer part of the theoretical interpolation number is used to determine the breakpoint span. Optionally, from the preset interpolation parameter table, pre-configured according to the positioning scenario (3 seconds for walking scenario, maximum interpolation number of 20; 5 seconds for cycling scenario, maximum interpolation number of 12), query the interpolation parameter that best matches the current movement orientation to obtain the corresponding interpolation time interval t seconds and maximum interpolation number threshold N. Divide the breakpoint time span value by t to obtain the theoretical number of interpolations. If the theoretical number of interpolations exceeds N, take N; otherwise, take its integer part to determine the number of points that need to be interpolated.
[0078] In one embodiment, the location point filtering for high-jump markers is achieved by traversing the location sequence. A location point buffer is maintained; when a high-jump marker is detected, the location point and its immediate and adjacent locations are extracted for specialized processing. This filtering mechanism avoids unnecessary processing of normal continuous location points, improving system efficiency. The arctan2 function is the standard function for calculating azimuth angles. Compared to the ordinary arctan function, it can handle angle calculations in all four quadrants. This function accepts two parameters: the longitude difference and the latitude difference, and returns a value ranging from -π to π radians. By converting the radian value to degrees and adjusting it to the 0-360 degree range, a standard azimuth angle representation is obtained.
[0079] For example, when both the longitude and latitude differences are positive, the azimuth angle is between 0 and 90 degrees, indicating the northeast direction; when both the longitude and latitude differences are negative, the azimuth angle is between 90 and 180 degrees, indicating the northwest direction. Calculating the breakpoint time span involves timestamp processing. Positioning point timestamps are typically recorded with millisecond precision, and the time interval obtained by subtracting two timestamps is also in milliseconds. Dividing by 1000 converts milliseconds to seconds, facilitating subsequent speed and distance calculations. In practical applications, the breakpoint time span can range from a few seconds to several minutes, depending on the reason for and duration of the positioning signal interruption.
[0080] Preferably, the interpolation parameter table is pre-configured according to different application scenarios. For navigation applications, the interpolation time interval is usually set to 1 second, and the maximum interpolation threshold is 30 points, which can fill in the track gaps of up to 30 seconds. For logistics tracking applications, since the real-time requirements are lower, the interpolation time interval can be set to 5 seconds, and the maximum interpolation threshold is 20 points, covering a 100-second breakpoint.
[0081] In one possible implementation, the calculated theoretical number of interpolation points might be a decimal, and rounding down to the integer part ensures the total number of interpolation points is an integer. When the breakpoint time span is 25 seconds and the interpolation interval is 2 seconds, the theoretical number of interpolation points is 12.5, and 12 interpolation points are actually used. This approach ensures a uniform distribution of interpolation points along the time axis, avoiding accumulated errors caused by rounding.
[0082] S106. Generate the longitude, latitude, and ellipsoidal height of several intermediate positioning points within the breakpoint span, and integrate them with the adjusted longitude, adjusted latitude, and adjusted ellipsoidal height to form a continuous trajectory point set.
[0083] Based on the breakpoint span and breakpoint time span values, the time span value is divided by the breakpoint span to obtain the unit time interval. Using the latitude and longitude difference between the previous fixed point and the current positioning point, and the breakpoint span, the longitude and latitude step amounts for each interpolation point are calculated. Starting from the latitude and longitude of the previous fixed point, the step amounts are accumulated sequentially to obtain the longitude and latitude sequences for each intermediate positioning point. Based on these longitude and latitude sequences, the difference between the ellipsoidal height of the previous fixed point and the ellipsoidal height of the current positioning point is calculated. The height difference is divided by the breakpoint span to obtain the unit elevation change. Starting from the ellipsoidal height of the previous fixed point, the unit elevation change is accumulated sequentially using linear interpolation to obtain the ellipsoidal height sequence for each intermediate positioning point. The longitude, latitude, and ellipsoidal height sequences of each intermediate positioning point are combined in chronological order to form a complete positioning point list. This complete positioning point list is then merged with the adjusted longitude, adjusted latitude, and adjusted ellipsoidal height, expressed based on the same geocentric coordinate datum, to obtain a continuous trajectory point set.
[0084] In one embodiment, the breakpoint span represents the number of positioning points that need to be interpolated, a number that has been determined in the preceding steps based on the time span and interpolation interval. The step size is calculated based on the principle of uniform distribution, distributing the latitude and longitude difference between two points evenly across the interpolation points.
[0085] For example, if the longitude of the previous positioning point is 116.3 degrees and the longitude of the current positioning point is 116.5 degrees, with a breakpoint span of 10 points, then the longitude step is 0.02 degrees, and the longitude of each interpolation point is successively 116.32 degrees, 116.34 degrees, 116.36 degrees, and so on. Linear interpolation is a fundamental method for handling elevation changes. This method assumes that the elevation change between two positioning points is uniform. Although the actual terrain may have undulations, this assumption is usually reasonable within short time breaks. By calculating the elevation difference between the starting and ending points and then evenly distributing the difference across all time points, a smooth elevation change curve can be obtained. This method is particularly suitable for scenarios where vehicles are driving on slopes or aircraft are climbing and descending.
[0086] Specifically, the process of completing the list of positioning points involves the design of data structures. Each interpolated point contains four basic attributes: timestamp, longitude, latitude, and ellipsoidal altitude. The timestamp is obtained by accumulating a unit time interval on the starting time, ensuring that the interpolated points are evenly distributed on the time axis. All interpolated points are arranged in chronological order to form an ordered positioning sequence.
[0087] Preferably, during the merging process, the system checks whether all positioning points are based on the same geocentric coordinate datum. If positioning points exist on different datums, coordinate transformation is required to ensure that all points are represented within the same reference frame. This unification process avoids trajectory discontinuities caused by differences in datums.
[0088] In one possible implementation, the continuous trajectory point set is stored using a linked list or array structure. Linked lists facilitate dynamic insertion and deletion of positioning points, making them suitable for real-time updates; arrays offer fast access speeds, making them suitable for batch processing and trajectory playback. The continuous trajectory formed in this way eliminates trajectory breaks caused by satellite system switching, providing a smooth position sequence for navigation applications.
[0089] For example, in urban environments, GNSS signals may be temporarily lost when a vehicle passes through an area obstructed by tall buildings. The interpolation method described above allows for the reasonable estimation of the vehicle's trajectory during the obstruction period based on its entry and exit points from the obstruction area, ensuring navigation continuity.
[0090] S107. Encapsulate the continuous set of trajectory points into a GNSS data transmission message, attaching the current reference surface identification information, and transmit it to the mobile terminal via the Bluetooth broadcast channel.
[0091] The continuous trajectory point set is serialized according to a preset message format, and a synchronization byte is added as the message header. The timestamp, longitude, latitude, and ellipsoidal altitude data of each positioning point are sequentially written into the message body. A unified reference surface identifier and checksum are appended to the message tail to obtain the encapsulated GNSS data transmission message. The encapsulated GNSS data transmission message is then sent via Bluetooth Low Energy broadcast data packets. The broadcast interval and broadcast power level are set, and message data is sent in turn on a preset broadcast channel, allowing the mobile terminal to receive the broadcast data packets in scanning mode, thus achieving connectionless transmission to the mobile terminal.
[0092] In one embodiment, the message format employs either fixed length or variable length. Fixed-length messages occupy a predetermined number of bytes per field, facilitating parsing but potentially wasting storage space; variable-length messages use a length field to indicate the size of subsequent data, achieving high space utilization but increasing parsing complexity. Synchronization bytes typically use a combination of two different byte values to reduce the probability of missynchronization. A unified reference plane identifier code is crucial information for distinguishing different coordinate systems. This identifier code occupies one byte, where 0x01 represents the WGS84 reference plane, 0x02 represents the CGCS2000 reference plane, and 0x03 represents the PZ90.11 reference plane. The receiving end uses this identifier code to determine the coordinate frame upon which the positioning data is based, avoiding positioning errors caused by reference plane confusion. The checksum is calculated using cyclic redundancy check or XOR check, used to detect data errors during transmission.
[0093] Preferably, the connectionless transmission mode of the Bluetooth Low Energy protocol has unique advantages. In this mode, the transmitter continuously broadcasts data without establishing a connection, and multiple receivers can receive the same data simultaneously. The broadcast interval setting affects the balance between power consumption and real-time performance; a shorter interval increases the data update frequency but increases power consumption, while a longer interval reduces power consumption but may cause data delay.
[0094] This invention provides a connectionless GNSS data transmission system based on a Bluetooth broadcast channel, mainly comprising: a Bluetooth broadcast receiving module, used to receive GNSS data transmission messages through the Bluetooth broadcast channel, extract the satellite system identifier, original longitude, original latitude, and ellipsoidal altitude of the current positioning point, and obtain a coordinate data packet of the current positioning point; a satellite system identifier comparison module, used to compare the satellite system identifier in the coordinate data packet with the satellite system identifier of the previous positioning point, determine the satellite navigation system type corresponding to the two identifiers, synchronously identify the geocentric coordinate reference surface type used by each, mark the reference surface difference type and the conversion parameters between reference surfaces, and obtain a system switching mark; and a coordinate reference surface conversion module, used for positioning points whose system switching mark is switched, to extract the original longitude, original latitude, and ellipsoidal altitude from the coordinate data packet, identify the geocentric coordinate reference surface type used by the current satellite system, and convert the original longitude, original latitude, and ellipsoidal altitude into a coordinate reference surface. The system is divided into several modules: A first module adjusts the latitude and longitude of the current reference plane to the same coordinate system as the previous fixed point, and an second module adjusts the ellipsoidal height. The third module adjusts the latitude and longitude of the current reference plane to the same coordinate system as the previous fixed point, and identifies the difference between the horizontal displacement and the expected normal displacement, marking high-jump or low-continuity points. A fourth module identifies the motion orientation between breakpoints for high-jump points, based on the difference in longitude and latitude between the previous fixed point and the current location point, and identifies the breakpoint span. A fifth module generates the longitude, latitude, and ellipsoidal height of several intermediate locations within the breakpoint span, and integrates these with the adjusted longitude, latitude, and ellipsoidal height to form a continuous set of trajectory points. A sixth module encapsulates the continuous trajectory point set into a GNSS data transmission message, including the current reference plane identification information, and transmits it to the mobile terminal via a Bluetooth broadcast channel. If the technical solution of this application involves the collection, processing, or application of personal information, the relevant products have, before implementing any personal information processing activities, fully and clearly informed individuals of the processing rules in accordance with the Personal Information Protection Law and other current laws and regulations, and obtained their voluntary and explicit consent. If sensitive personal information is involved, the product has obtained the individual's separate consent before processing, and such consent is given in an explicit manner. For example, prominent signs are set up in the area where information collection devices such as cameras are located, clearly indicating "Entering is considered as consent to the collection of personal information"; or through pop-ups, checkboxes, user-initiated uploads, etc., under the premise of clearly listing the processor's identity, processing purpose, processing method, and information type, the user actively completes the authorization operation. The above mechanisms ensure that all personal information processing activities are based on legal authorization and fully comply with national compliance requirements regarding personal information protection.
[0095] Based on the embodiments of the present invention described above, and through the above description, those skilled in the art can make various changes and modifications without departing from the technical concept of the present invention. The technical scope of the present invention is not limited to the contents of the specification, but must be determined according to the scope of the claims.
Claims
1. A connectionless GNSS data transmission method based on a Bluetooth broadcast channel, characterized in that, The method includes: By receiving GNSS data transmission messages through the Bluetooth broadcast channel, the satellite system identifier, original longitude, original latitude, and ellipsoidal altitude of the current positioning point are extracted to obtain the coordinate data packet of the current positioning point; By comparing the satellite system identifier in the coordinate data packet with the satellite system identifier at the previous fixed position, the satellite navigation system type corresponding to the two identifiers is determined, the geocentric coordinate reference surface type used by each is identified synchronously, the reference surface difference type and the conversion parameters between the reference surfaces are marked, and the system switching mark is obtained. For the location points marked as switched by the system, extract the original longitude, original latitude, and ellipsoidal altitude from the coordinate data packet, identify the geocentric coordinate reference surface type used by the current satellite system, and adjust the original longitude, original latitude, and ellipsoidal altitude from the current reference surface to the adjusted longitude, latitude, and ellipsoidal altitude in the same coordinate system as the previous location point; Based on the adjusted latitude and longitude and the latitude and longitude of the previous fixed position, position jump assessment is performed to identify the difference between the horizontal displacement and the expected normal displacement, and high jump markers or low continuous markers are marked. For high jump markers, the movement orientation between breakpoints is identified based on the longitude and latitude differences between the previous fixed point and the current positioning point under the same reference plane coordinate system, and the span of the breakpoint is identified. The process involves generating the longitude, latitude, and ellipsoidal altitude of several intermediate positioning points within the breakpoint span, integrating these with the adjusted longitude, latitude, and ellipsoidal altitude to form a continuous trajectory point set. This includes: dividing the time span value by the breakpoint span to obtain the unit time interval based on the breakpoint span and time span value; calculating the longitude and latitude step size for each interpolation point based on the longitude and latitude difference between the previous positioning point and the current positioning point, and the breakpoint span; and sequentially accumulating the step size starting from the longitude and latitude of the previous positioning point to obtain the longitude and latitude sequences of each intermediate positioning point; and then, based on the longitude and latitude sequences... The difference between the ellipsoidal height of the previous fixed point and the ellipsoidal height of the current fixed point is calculated. The height difference is divided by the span of the breakpoint to obtain the unit elevation change. Starting from the ellipsoidal height of the previous fixed point, the unit elevation change is accumulated sequentially using linear interpolation to obtain the ellipsoidal height sequence of each intermediate fixed point. The longitude sequence, latitude sequence, and ellipsoidal height sequence of each intermediate fixed point are combined in chronological order to form a complete list of fixed points. The complete list of fixed points is merged with the adjusted longitude, adjusted latitude, and adjusted ellipsoidal height, and expressed based on the same geocentric coordinate reference surface to obtain a set of continuous trajectory points. The continuous set of trajectory points is encapsulated into a GNSS data transmission message, with the current reference surface identification information attached, and transmitted to the mobile terminal via Bluetooth broadcast channel.
2. The connectionless GNSS data transmission method based on a Bluetooth broadcast channel according to claim 1, characterized in that, The satellite system identifier in the coordinate data packet is compared with the satellite system identifier at the previous fixed position to determine the satellite navigation system type corresponding to the two identifiers. Simultaneously, the geocentric coordinate reference surface type used by each is identified, and the reference surface difference type and conversion parameters between reference surfaces are marked to obtain the system switching marker, including: Extract the satellite system identification code from the current coordinate data packet, and perform a byte-level comparison with the cached satellite system identification code of the previous location to determine that a satellite navigation system switch has occurred, and obtain the system switch status; Based on the system switching status, when it is determined that a switch has been made, the preset reference plane parameter lookup table is queried according to the system identification codes before and after the switch. The conversion parameters of the corresponding reference plane combination are extracted from the lookup table, including X-axis translation, Y-axis translation, Z-axis translation, X-axis rotation angle, Y-axis rotation angle, Z-axis rotation angle and scale scaling factor, to form a reference plane conversion parameter set. A system switching flag is generated based on the numerical values of each parameter in the reference plane conversion parameter set.
3. The connectionless GNSS data transmission method based on a Bluetooth broadcast channel according to claim 1, characterized in that, For positioning points marked as switched by the system, the process involves extracting the original longitude, original latitude, and ellipsoidal altitude from the coordinate data packet, identifying the geocentric coordinate reference surface type used by the current satellite system, and adjusting the original longitude, original latitude, and ellipsoidal altitude from the current reference surface to adjusted longitude, latitude, and ellipsoidal altitude in the same coordinate system as the previous positioning point. This includes: When the state is marked as switched, the original longitude value, original latitude value, and ellipsoidal height value are extracted from the longitude field, latitude field, and height field of the coordinate data packet, respectively. The reference surface type mapping table is queried according to the current satellite system identifier to obtain the name of the geocentric coordinate reference surface currently used. Read the reference surface type of the previous fixed point, match the name of the currently used geocentric coordinate reference surface with the reference surface type of the previous fixed point, query the pre-stored reference surface transformation parameter table, extract the transformation parameters from the source reference surface to the target reference surface, and form a reference surface transformation parameter set; Using the aforementioned reference surface transformation parameter set, the original longitude, original latitude, and ellipsoidal height are converted from geodetic coordinates to spatial rectangular coordinates to obtain the original X, Y, and Z coordinate values. Translation, rotation, and scaling transformations are then performed on the original X, Y, and Z coordinate values in sequence. Finally, the transformed spatial rectangular coordinates are converted back to geodetic coordinates using the inverse transformation formula to obtain the adjusted longitude, adjusted latitude, and adjusted ellipsoidal height.
4. The connectionless GNSS data transmission method and system based on Bluetooth broadcast channel according to claim 1, characterized in that, Adjusting the original longitude, original latitude, and ellipsoidal altitude from the current reference plane to adjusted longitude, latitude, and ellipsoidal altitude in the same coordinate system as the previous fixed point involves: extracting angle values from the original longitude and original latitude; identifying the spatial position under the current reference plane; translating the spatial position along the three axes to the origin of the target reference plane according to the three-axis offset; adjusting the orientation of the spatial position by applying the three-axis rotation angle; correcting the distance scale of the spatial position by applying the scale scaling factor; and back-calculating the adjusted longitude and adjusted latitude from the converted spatial position.
5. The connectionless GNSS data transmission method and system based on a Bluetooth broadcast channel according to claim 1, characterized in that, Adjusting the original longitude, original latitude, and ellipsoidal height from the current reference plane to the adjusted longitude, latitude, and ellipsoidal height in the same coordinate system as the previous fixed point involves: calculating the spatial rectangular coordinates using formulas based on the longitude λ, latitude φ, and ellipsoidal height h to obtain the three-dimensional spatial coordinates under the current reference plane; Read the pre-stored X-axis translation, Y-axis translation, and Z-axis translation, add the corresponding translation to the X, Y, and Z components of the three-dimensional spatial coordinates respectively, and perform a translation transformation of the coordinate origin; Extract the rotation angles around the X-axis, Y-axis, and Z-axis, construct a rotation matrix, and perform coordinate rotation through matrix multiplication; Multiply the rotated coordinates by a scaling factor to correct the scale difference between the two reference planes, and then calculate the adjusted longitude, adjusted latitude, and adjusted ellipsoidal height using the inverse calculation formula.
6. The connectionless GNSS data transmission method based on a Bluetooth broadcast channel according to claim 1, characterized in that, The method of assessing positional jumps based on the adjusted latitude and longitude and the latitude and longitude of a previous fixed point, identifying the difference between the horizontal displacement and the expected normal displacement, and marking high jump markers or low continuity markers includes: Calculate the spherical distance between the adjusted longitude and latitude and the longitude and latitude of the previous fixed point. Calculate the horizontal displacement based on the radian value of the difference between the Earth's average radius and the longitude and latitude of the two points to obtain the actual displacement distance. The time difference of data collection is obtained by subtracting the timestamp of the previous location from the timestamp of the current location. The time difference of data collection is multiplied by the preset upper limit of the moving speed per unit time. The corresponding upper limit of speed is read according to the type of moving vehicle, and the expected normal displacement is calculated. The displacement ratio is obtained by dividing the actual displacement distance by the expected normal displacement. When the displacement ratio exceeds a preset multiple threshold, a high jump mark is generated. When the displacement ratio is within the preset multiple threshold range, a low continuity mark is generated.
7. The connectionless GNSS data transmission method based on a Bluetooth broadcast channel according to claim 1, characterized in that, The positioning point for the high jump marker is identified based on the difference in longitude and latitude between the previous fixed point and the current positioning point in the same reference plane coordinate system to determine the direction of movement between the breakpoints and to identify the span of the breakpoint, including: Extract the current longitude and latitude values from the positioning point of the high jump marker, calculate the difference between the longitude and latitude values of the previous positioning point, calculate the azimuth angle, convert the azimuth angle into degree representation, and obtain the movement orientation between the breakpoints; Based on the motion orientation, subtract the timestamp of the previous fixed point from the timestamp of the current fixed point to calculate the time interval between the two fixed points, and convert the time interval into seconds to obtain the breakpoint time span value. Based on the breakpoint time span value, the preset interpolation parameter table is queried to obtain the corresponding interpolation time interval and the maximum interpolation quantity threshold, and the breakpoint span is determined.
8. The connectionless GNSS data transmission method based on a Bluetooth broadcast channel according to claim 1, characterized in that, The process of encapsulating a continuous set of trajectory points into a GNSS data transmission message, including current reference surface identification information, and transmitting it to a mobile terminal via a Bluetooth broadcast channel includes: The continuous trajectory point set is serialized according to the preset message format, and a synchronization byte is added as the message header. The timestamp, longitude, latitude and ellipsoidal height data of each positioning point are written sequentially in the message body. A unified reference surface identifier code and checksum are appended to the end of the message to obtain the encapsulated GNSS data transmission message. The message is then sent via Bluetooth Low Energy broadcast data packets. The broadcast interval and broadcast power level are set, and the message data is sent in turn on the preset broadcast channel.
9. A connectionless GNSS data transmission system based on a Bluetooth broadcast channel, characterized in that, The system for implementing the connectionless GNSS data transmission method based on a Bluetooth broadcast channel as described in claim 1 includes: The Bluetooth broadcast receiver module is used to receive GNSS data transmission messages through the Bluetooth broadcast channel, extract the satellite system identifier, original longitude, original latitude and ellipsoidal altitude of the current positioning point, and obtain the coordinate data packet of the current positioning point. The satellite system identifier comparison module is used to compare the satellite system identifier in the coordinate data packet with the satellite system identifier of the previous fixed position, determine the satellite navigation system type corresponding to the two identifiers, synchronously identify the geocentric coordinate reference surface type used by each, mark the reference surface difference type and the conversion parameters between the reference surfaces, and obtain the system switching mark. The coordinate reference plane conversion module is used to extract the original longitude, original latitude, and ellipsoidal altitude from the coordinate data packet for positioning points marked as switched by the system, identify the geocentric coordinate reference plane type used by the current satellite system, and adjust the original longitude, original latitude, and ellipsoidal altitude from the current reference plane to the adjusted longitude, latitude, and ellipsoidal altitude in the same coordinate system as the previous positioning point. The position jump assessment module is used to assess the position jump based on the adjusted latitude and longitude and the latitude and longitude of the previous fixed point, identify the difference between the horizontal displacement and the expected normal displacement, and mark high jump or low continuity. The motion orientation recognition module is used to identify the motion orientation between breakpoints based on the longitude and latitude differences between the previous fixed point and the current fixed point in the same reference plane coordinate system, and to identify the span of the breakpoints for the positioning points marked by high jumps. The trajectory point generation module is used to generate the longitude, latitude, and ellipsoidal height of several intermediate positioning points within the breakpoint span, and integrate them with the adjusted longitude, adjusted latitude, and adjusted ellipsoidal height to form a continuous trajectory point set; The data transmission encapsulation module is used to encapsulate a continuous set of trajectory points into a GNSS data transmission message, with the current reference surface identification information attached, and transmit it to the mobile terminal via the Bluetooth broadcast channel.
Citation Information
Patent Citations
Satellite navigation receiver and method for switching between real-time kinematic mode and relative positioning mode
CN107710017A
Method for changing mapping data of global satellite positioning system base station after moving
CN109115196A