Position measurement error detection

By comparing sensor position measurement with VIO measurement and combining it with geospatial data, the problem of decreased accuracy of GNSS measurement in complex environments was solved, the tracking accuracy of device pose in AR applications was improved, and the accuracy of position measurement was ensured.

CN122055643APending Publication Date: 2026-05-15NIANTIC SPACE CORP
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
NIANTIC SPACE CORP
Filing Date
2024-08-22
Publication Date
2026-05-15

AI Technical Summary

Technical Problem

In AR applications, the accuracy of GNSS measurements is reduced due to environmental factors, affecting the accuracy of device pose estimation, especially indoors or in situations surrounded by buildings.

Method used

The accuracy of sensor position measurements is identified by comparing them with visual inertial odometry (VIO) measurements, and inaccurate satellite signals are eliminated using a satellite signal accuracy evaluator. The accuracy of the position measurements is then verified by combining geospatial data.

Benefits of technology

It improves the accuracy of device position measurement in complex environments, enhances the accuracy of device pose tracking in AR applications, and ensures the provision of more accurate location-based services.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122055643A_ABST
    Figure CN122055643A_ABST
Patent Text Reader

Abstract

A system is presented that determines the accuracy of a set of a plurality of sensor position measurements containing a client device and generates the set of sensor position measurements marked with an associated accuracy estimate. The system receives a plurality of sensor position measurements of a client device generated by a position sensor. The system may determine the accuracy of the sensor position measurements by comparing the sensor position measurements with reference position measurements, such as VIO position measurements calculated using VIO data. The system calculates a first set of position transitions for the set of sensor position measurements and a second set of position transitions for the set of VIO position measurements. The system calculates a measurement difference between each corresponding pair of position transitions from the first set and the second set, identifies a measurement difference that exceeds a threshold, and marks the corresponding sensor position measurements as inaccurate.
Need to check novelty before this filing date? Find Prior Art

Description

Cross-reference to related applications

[0001] This application claims the benefits of U.S. Provisional Application No. 63 / 578,122, filed August 22, 2023; U.S. Application No. 18 / 523,792, filed November 29, 2023; and U.S. Application No. 18 / 523,795, filed November 29, 2023, all of which are incorporated herein by reference in their entirety. Technical Field

[0002] This disclosure relates generally to device positioning, and more specifically to the accuracy of determining location measurements. Background Technology

[0003] Augmented Reality (AR) technology has advanced rapidly in recent years and has been widely adopted across various industries. In AR applications, systems can track the position and orientation (collectively referred to as "pose") of a user device in the physical world to provide services to the user. The system can overlay virtual elements onto a depiction of the real-world environment. Specifically, the system can display virtual elements on a video feed captured by the user device and displayed to the user, making the virtual elements appear to be located within the physical world. The system can use the device's pose to correctly display the virtual elements. However, AR applications face challenges in accurately tracking the device's pose as it moves around within a geographic area. For example, determining the accurate pose of a device using GNSS measurements is challenging because Global Navigation Satellite System (GNSS) measurements are often inaccurate or incorrect due to environmental factors. Environmental factors can include tall buildings or other structures that may reflect or block GNSS satellite signals and may introduce multipath interference. Therefore, devices located indoors or surrounded by buildings may suffer from reduced GNSS measurement accuracy, negatively impacting the accuracy of pose estimation. Summary of the Invention

[0004] A system (such as a game server or client device) compares sensor position measurements with visual inertial odometry (VIO) measurements to confirm the accuracy of the sensor position measurements. The sensor position measurements are measurements captured by the position sensors of the client device. For example, the sensor position measurements could be GNSS measurements captured by GNSS sensors on the client device. The client device captures a set of sensor position measurements and generates transformations between these measurements. These transformations represent changes between sequential pairs of position measurements. For example, a transformation could be a vector representing the change from the position of a first measurement to the position of a second measurement.

[0005] The client device also captures VIO position measurements and similarly generates transitions between VIO measurements. The client device identifies the VIO position transition corresponding to each sensor position transition and calculates the difference between them to determine if they are different enough that the sensor position measurement might be inaccurate. For example, if the difference between the sensor position transition and the VIO position transition exceeds a certain threshold, the client device might mark the sensor position measurement corresponding to the sensor position transition as inaccurate. If the client device identifies an inaccurate sensor position measurement, it can perform remedial actions such as disabling certain location-based features of client applications running on the client device or notifying the user of the client device.

[0006] A system (such as a game server or client device) identifies inaccurate satellite signals, making it impossible to locate the client device using other satellite signals from that satellite. For example, the client device might receive a set of satellite signals from a collection of satellites and generate subsets from that set, each excluding one of the satellite signals. The client device generates sensor position measurements for each subset and generates an accuracy score for each of these measurements. The client device then identifies inaccurate sensor signals based on the accuracy scores of the subsets. For example, the client device might identify subsets with accuracy scores indicating that the corresponding sensor position measurements are accurate and thus determine that satellite signals excluded from that subset are inaccurate.

[0007] Comparing sensor position measurements with VIO position measurements allows for more effective identification of when position sensors are capturing inaccurate measurements. VIO systems tend to measure device movement very effectively, but they often fail to provide the device's absolute position. Instead, VIO systems tend to generate measurements that show the device's position relative to a point (e.g., a starting point). In contrast, sensor position measurements (such as GNSS measurements) can provide the device's absolute position on Earth, but if sensor position measurements are inaccurate, those inaccuracies tend to be independent of each measurement. Therefore, by identifying the differences between the movement of a client device, as determined by a VIO system and a position sensor, the client device can more effectively identify inaccuracies in the position sensor measurements.

[0008] Furthermore, by identifying satellites that are providing inaccurate signals (e.g., due to signal bounce from nearby landmarks such as buildings), client devices can account for inaccurate signals when using a set of satellite signals to determine their location. Therefore, client devices can locate themselves more effectively and provide users with more accurate location-based services. Attached Figure Description

[0009] Figure 1A network computing environment 100 according to some embodiments is shown.

[0010] Figure 2 This is a conceptual diagram illustrating the process of determining the accurate geographic orientation of a client device relative to a reference frame, according to some embodiments.

[0011] Figure 3 A conceptual diagram illustrating the operation of an accuracy evaluator module according to some embodiments is shown.

[0012] Figure 4 This is a flowchart illustrating a process, according to some embodiments, for generating a set of classified sensor position measurements for use in a world pose optimization algorithm.

[0013] Figure 5 This is a flowchart illustrating a process for identifying inaccurate satellite signals from multiple satellite signals according to some embodiments.

[0014] Figure 6 This is an example architecture of a computing device according to some embodiments.

[0015] These figures depict various embodiments for illustrative purposes only. Those skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods shown herein can be employed without departing from the principles described herein. Detailed Implementation

[0016] Various embodiments are described in the context of parallel reality games, which include augmented reality content in a virtual world geography that is at least partially parallel to the real world geography, such that a player's movement and actions in the real world affect actions in the virtual world, and vice versa. Those skilled in the art will understand using the disclosure provided herein that the described subject matter is also applicable to other situations where magnetic field measurements are desired. For example, the methods described herein can be implemented in location-based applications that display virtual navigation instructions or text labels related to real-world information. Furthermore, the inherent flexibility of computer-based systems allows for a variety of possible configurations, combinations, and divisions of tasks and functions among and within the components of the system. For example, systems and methods according to aspects of this disclosure can be implemented using a single computing device or across multiple computing devices (e.g., connected in a computer network). System Overview

[0017] Figure 1 A network computing environment 100 according to some embodiments is shown. Although... Figure 1The parallel reality game environment is described as an example, but the described methods / systems can also be used in other contexts. In fact, and as those skilled in the art will recognize, network computing environments can have… Figure 1 Additional components, fewer components, or variations of the components provided herein. Furthermore, while each component in the network computing environment 100 is described in the singular, the network computing environment 100 may include one or more components of each component. Additionally, the function of each component may be divided differently than described below. For example, a client device may determine the accuracy of a sensor position measurement by determining the accuracy locally or by sending the measurement to a remote server (e.g., game server 120).

[0018] The network computing environment 100 allows players to interact in a virtual world with a geography parallel to the real world. Specifically, geographical regions in the real world can be directly linked to or mapped to corresponding regions in the virtual world. Players can move around in the virtual world by moving to various geographical locations in the real world. For example, a player's location in the real world can be tracked and used to update the player's location in the virtual world. Typically, a player's location in the real world is determined by finding the location of the client device 110 through which the player is interacting with the virtual world and assuming the player is in the same (or substantially the same) location. For example, in various embodiments, a player can interact with a virtual element if their location in the real world is within a threshold distance (e.g., ten meters, twenty meters, etc.) of the real-world location corresponding to the virtual location of the virtual element in the virtual world. For convenience, various embodiments are described with reference to "player's location," but those skilled in the art will appreciate that such a reference can refer to the location of the player's client device 110.

[0019] The networked computing environment 100 uses a client-server architecture, where a game server 120 communicates with client devices 110 via network 105 to provide parallel reality games to players located at client devices 110. The networked computing environment 100 may also include other external systems, such as sponsor / advertiser systems or commercial systems. Although Figure 1 Only one client device 110 is shown, but in reality, any number of client devices 110 or other external systems can be connected to the game server 120 via network 105. Furthermore, the networked computing environment 100 may contain different or additional components, and functionality may be distributed between the client device 110 and the server 120 in a manner different from that described below.

[0020] Client device 110 can be any portable computing device that a player can use to interact with game server 120. For example, client device 110 can be a wireless device, personal digital assistant (PDA), portable gaming device, cellular phone, smartphone, tablet, navigation system, handheld GNSS system, wearable computing device, display with one or more processors, or other such devices. In another instance, client device 110 includes a conventional computer system, such as a desktop or laptop computer. Furthermore, client device 110 can be a vehicle with computing capabilities. In short, client device 110 can be any computer device or system that enables a player to interact with game server 120. As a computing device, client device 110 may include one or more processors and one or more computer-readable storage media. The computer-readable storage media may store instructions that cause the processor to perform operations. Client device 110 is preferably a portable computing device that can be easily carried or otherwise transported by the player, such as a smartphone or tablet.

[0021] Client device 110 communicates with game server 120 to provide the game server 120 with physical environment perception data. Client device 110 includes a camera component 125 that captures two-dimensional image data of the scene in the physical environment in which client device 110 is located. Figure 1 In the illustrated embodiment, each client device 110 includes a sensor module 130 and software components such as a game module 135 and a positioning module 140. Client device 110 may also include various other input / output devices for receiving information from and / or providing information to the player. Example input / output devices include a display screen, touchscreen, touchpad, data input keys, speaker, and microphone suitable for voice identification. Client device 110 may also include a network interface for communicating via network 105. The network interface may include any suitable components for interfacing with one or more networks, including, for example, a transmitter, receiver, port, controller, antenna, or other suitable components.

[0022] Camera assembly 125 is responsible for capturing image data of the scene in the environment where client device 110 is located. Camera assembly 125 may utilize various photoelectric sensors with different color capture ranges at different capture rates. Camera assembly 125 may include a wide-angle lens or a telephoto lens. Camera assembly 125 may be configured to capture a single image or video as image data. Additionally, the orientation of camera assembly 125 may be parallel to the ground, with camera assembly 125 aiming at the horizon. Camera assembly 125 captures image data and shares the image data with a computing device on client device 110. The image data may be appended with metadata describing other details of the image data, including sensor data (e.g., temperature, ambient brightness) or capture data (e.g., exposure, color temperature, shutter speed, focal length, capture time, etc.). Camera assembly 125 may include one or more cameras capable of capturing image data. In one example, camera assembly 125 includes one camera and is configured to capture monocular image data. In another example, camera assembly 125 includes two cameras and is configured to capture stereo image data. In various other implementations, camera component 125 includes multiple cameras, each configured to capture image data.

[0023] Client device 110 includes a sensor module 130, which may include various sensors for recording data from client device 110. These various sensors include, but are not limited to: position sensors, motion sensors, accelerometers, gyroscopes, other inertial measurement units (IMUs), barometers, positioning systems, thermometers, light sensors, depth sensors, etc. Position sensors are sensors that generate sensor position measurements describing the position of client device 110. For example, each sensor position measurement may include the longitude, latitude, or altitude of client device 110, and may also include a timestamp describing when the sensor position measurement was captured.

[0024] The position sensor may be a Global Navigation Satellite System (GNSS) sensor that uses signals from satellites to estimate the position of client device 110. The GNSS sensor receives satellite signals transmitted by GNSS satellites orbiting the Earth. The GNSS sensor includes an antenna that captures satellite signals, which may carry information associated with satellite identification, ephemeris data (e.g., satellite orbit, clock information), and timing data. In some embodiments, the positioning module 140 receives satellite signals from the position sensor to extract necessary information from the satellite signals to calculate sensor position measurements of client device 110, such as GNSS coordinates of client device 110. The positioning module may use methods including, but not limited to, trilateration, multilateral measurement, phase difference of arrival (PDOA), time difference of arrival (TDOA), or any suitable combination thereof to calculate the position of client device 110.

[0025] The client device can use images captured by camera component 125 and data captured from sensor module 130 as visual inertial odometry (VIO) data to determine the pose of the client device. For example, client device 110 can send VIO data to pose determination module 170 to generate positioning information, such as the pose of client device 110, for example, the orientation of client device 110.

[0026] Game module 135 provides players with an interface to participate in parallel reality games. Game server 120 sends game data via network 105 to client device 110 for use by game module 135 at client device 110, thereby providing a local version of the game to players located remotely from game server 120. Game server 120 may include a network interface for communication via network 105. The network interface may include any suitable components for interfacing with one or more networks, including, for example, transmitters, receivers, ports, controllers, antennas, or other suitable components.

[0027] Game module 135, executed by client device 110, provides an interface between the player and the parallel reality game. Game module 135 can present a user interface on a display device associated with client device 110, displaying a virtual world associated with the game (e.g., rendered images of the virtual world) and allowing the user to interact within the virtual world to complete various game objectives. In some embodiments, game module 135 presents image data from the real world enhanced with virtual elements from the parallel reality game (e.g., captured by camera component 125). In these embodiments, game module 135 can generate and / or adjust virtual content based on additional information received from other components of client device 110. For example, game module 135 can adjust virtual objects to be displayed on the user interface based on a depth map of the scene captured in the image data. In other embodiments, game module 135 generates virtual objects for display on a semi-transparent display through which the user views the real world (e.g., an AR headset, AR glasses, etc.). Thus, virtual objects can be overlaid on the user's view of the real world.

[0028] Game module 135 can also control various other outputs to allow players to interact with the game without looking at the display screen. For example, game module 135 can control various audio, vibration, or other notifications that allow players to play the game without looking at the display screen. Game module 135 can access game data received from game server 120 to provide the user with an accurate representation of the game. Game module 135 can receive and process player input and provide updates to game server 120 via network 105. Game module 135 can also generate and / or adjust game content to be displayed by client device 110. For example, game module 135 can generate virtual elements based on depth information. In another example, game module 135 can update virtual elements based on the pose of camera components.

[0029] In one embodiment, client device 110 can determine a coarse location. Client device 110 includes a positioning module 140, which includes any device or circuitry for monitoring the location of client device 110. For example, positioning module 140 can determine the actual or relative location using a satellite navigation positioning system (e.g., a Global Navigation Satellite System (GNSS) including GPS, Galileo, GLONASS, BeiDou Navigation Satellite System, etc.), an inertial navigation system, a dead reckoning system, an IP address-based method, by using triangulation and / or proximity to cell towers or Wi-Fi hotspots and / or other suitable techniques for determining location. As described above, positioning module 140 receives location data from location sensors (e.g., GNSS sensors) to generate multiple sensor location measurements of client device 110. Positioning module 140 can receive location data from various other sensors in sensor module 130, which can help to accurately locate the position of client device 110. Although the positioning module 140 can be used to determine the coarse location of the client device 110, the relocalization of the client device 110 (e.g., for determining the fine location and pose of the device) is performed by the pose determination module 170 on the game server 120, as discussed below. For example, the coarse location (e.g., GNSS coordinates) identified by the positioning module 140 can be used to identify a three-dimensional (3D) model of the environment in which the client device 110 is located, and the pose determination module 170 uses images captured by the camera component 125 to localize against the retrieved model.

[0030] In an embodiment where the approximate location of the client device is determined on the client side, the positioning module 140 tracks the player's location as the player moves around in the real world carrying the client device 110 and provides the player's location information to the game module 135. The game module 135 updates the player's location in the virtual world associated with the game based on the player's actual location in the real world. Therefore, the player can easily interact with the virtual world by carrying or transporting the client device 110 in the real world. Specifically, the player's location in the virtual world can correspond to the player's location in the real world. The game module 135 can send the player's location information to the game server 120 via network 105. In response, the game server 120 can employ various techniques to verify the location of the client device 110 to prevent cheaters from falsifying the location of the client device 110. It should be understood that location information associated with a player is only used after permission has been granted, following notification that the player's location information is to be accessed and how that location information will be used in the context of the game (e.g., to update the player's location in the virtual world). Furthermore, any location information associated with a player will be stored and maintained in a manner that protects the player's privacy.

[0031] Game server 120 can be any type of computing device and may include one or more processors and one or more computer-readable storage media. The computer-readable storage media may store instructions that cause the processor to perform operations. Game server 120 may include or communicate with game database 115. Game database 115 stores game data used in parallel reality games, which is to be supplied or provided to clients(s)110 via network 105.

[0032] The game data stored in the game database 115 may include: (1) data associated with the virtual world in the parallel reality game (e.g., image data used to render the virtual world on a display device, geographic coordinates of locations in the virtual world, etc.); (2) data associated with players in the parallel reality game (e.g., player profiles, including but not limited to player information, player experience level, player currency, current player location in the virtual / real world, player energy level, player preferences, team information, faction information, etc.); (3) data associated with game objectives (e.g., data associated with the current game objective, the state of the game objective, past game objectives, future game objectives, expected game objectives, etc.); and (4) data associated with virtual elements in the virtual world (e.g., virtual elements'...). (5) Data associated with real-world objects, landmarks, and locations linked to virtual world elements (e.g., location of real-world objects / landmarks, description of real-world objects / landmarks, relevance of virtual elements linked to real-world objects, etc.); (6) Game status (e.g., current number of players, current status of game objectives, player leaderboard, etc.); (7) Data associated with player actions / inputs (e.g., current player location, past player location, player movement, player input, player query, player communication, etc.); and (8) Any other data used, associated with, or obtained during the implementation of the parallel reality game. The game data stored in the game database 115 can be populated offline or in real-time by the system administrator, and / or populated by data received from users / players in environment 100 (e.g., from client device 110 via network 105).

[0033] Game server 120 can be configured to receive requests for game data from client device 110 (e.g., via Remote Procedure Call (RPC)) and respond to those requests via network 105. For example, game server 120 can encode game data in one or more data files and provide the data files to client device 110. Furthermore, game server 120 can also be configured to receive game data (e.g., player position, player actions, player input, etc.) from client device 110 via network 105. For example, client device 110 can be configured to periodically send player input and other updates to game server 120, which game server 120 uses to update game data in game database 115 to reflect any and all changes to the game.

[0034] In the illustrated embodiment, game server 120 includes a general gaming module 145, a commercial gaming module 150, a data collection module 155, an event module 160, a pose determination module 170, and a calibration module 180. As mentioned above, game server 120 interacts with game database 115, which may be part of game server 120 or remotely accessed (e.g., game database 115 may be a distributed database accessed via network 105). In other embodiments, game server 120 may include different and / or additional components. Furthermore, functionality may be distributed among components in a different manner than described. For example, game database 115 may be integrated into game server 120. Additionally, although pose determination module 170 and calibration module 180 are described as residing on game server 120, in other embodiments, as discussed above, pose determination and / or magnetic sensor calibration may be performed at client device 110.

[0035] The Universal Game Module 145 hosts a parallel reality game for all players and serves as the authoritative source of the current state of the parallel reality game for all players. As the host, the Universal Game Module 145 generates game content for presentation to players, for example, via their respective client devices 110. The Universal Game Module 145 can access the game database 115 to retrieve and / or store game data while hosting the parallel reality game. Furthermore, the Universal Game Module 145 receives game data (e.g., depth information, player input, player location, player actions, landmark information, etc.) from client devices 110 and incorporates the received game data into the overall parallel reality game for all players. The Universal Game Module 145 can also manage the delivery of game data to client devices 110 via network 105. The Universal Game Module 145 can also control the security aspects of client devices 110, including but not limited to ensuring the secure connection between client devices 110 and the game server 120, establishing connections between various client devices 110, and verifying the location of various client devices 110.

[0036] The commercial game module 150 (in embodiments including this commercial game module) may be separate from or part of the general game module 145. The commercial game module 150 can manage the inclusion of various game features linked to real-world business activities within the parallel reality game. For example, the commercial game module 150 may receive requests via network 105 (through a network interface) from external systems (such as sponsors / advertisers, merchants, or other entities) to include game features linked to business activities in the parallel reality game. The commercial game module 150 can then be configured to include these game features in the parallel reality game.

[0037] Game server 120 may also include a data collection module 155. The data collection module 155 (in embodiments including this module) may be separate from or part of the general game module 145. The data collection module 155 can manage the inclusion of various game features linked to real-world data collection activities within the parallel reality game. For example, the data collection module 155 can modify game data stored in game database 115 to include game features linked to data collection activities in the parallel reality game. The data collection module 155 can also analyze data collected by players based on data collection activities and provide the data for access by various platforms.

[0038] The Events module 160 manages player access to events within a parallel reality game. While the term "event" is used for convenience, it should be understood that it does not necessarily refer to a specific event at a particular location or time. Instead, it can refer to the provision of any access-controlled game content, where one or more access criteria are used to determine whether a player can access that content. Such content may be part of a larger parallel reality game that includes game content with fewer or no access controls, or it may be a standalone, access-controlled parallel reality game.

[0039] Pose determination module 170 receives VIO data from client device 110 to estimate the pose of client device 110 relative to a reference frame. The VIO data may include images captured by camera assembly 125 and sensor data from sensor module 130. In some embodiments, pose determination module 170 uses computer vision algorithms, such as VIO algorithms, to estimate the pose of one or more cameras of camera assembly 125. Pose determination module 170 applies VIO algorithms to the VIO data to detect visual features across multiple image frames to determine camera movement, and the camera's relative position and orientation relative to a reference frame. Pose determination module 170 may also process the sensor data to estimate the orientation, acceleration, and rotation of the client device. VIO determination module 170 then uses these results to determine the estimated pose of the client device relative to a reference frame. Pose determination module 170 may use filter-based algorithms, optimization-based algorithms, or deep learning-based algorithms to determine the pose of the client device. Some examples of VIO algorithms that the pose determination module 170 can use include simultaneous localization and mapping based on ORB features (ORB-SLAM), visual inertial navigation system using a monocular camera (VINS-Mono), and multi-state constrained Kalman filter (MSCKF).

[0040] The pose determination module 170 determines the pose of the client device relative to one or more existing images of the physical environment surrounding the client device 110, based on one or more images captured by the client device. In one embodiment, the pose determination module 170 uses GNSS coordinates (e.g., received from the positioning module 140 on the client device 110) to retrieve a 3D model of the environment in which the client device 110 is located. This 3D model may be a point cloud or mesh topology generated based on previously captured images of the environment. The pose determination module 170 then compares one or more images captured by the camera assembly 125 with the retrieved 3D model to generate a pose estimate of the client device 110. In some embodiments, the pose determination module 170 uses a 3D model from a visual positioning system (VPS) to determine the pose of the client device.

[0041] The accuracy evaluator module 180 is responsible for determining the accuracy of the sensor position measurements of the client device 110 and generating accuracy labels indicating whether each measurement is accurate. For example, the accuracy evaluator module 180 may receive multiple sensor position measurements from the client device 110 and compare each sensor position measurement with a set of reference position measurements. In some embodiments, the reference position measurements may include VIO position measurements determined using VIO data from the client device. Each VIO position measurement may include a latitude, longitude, or altitude measurement describing the location of the client device, and a timestamp describing when the VIO position measurement was generated. The accuracy evaluation process using VIO position measurements is described in... Figure 4 Further details are provided below.

[0042] The accuracy evaluator module 180 compares sensor location measurements with geospatial data from one or more geospatial databases to determine whether the sensor location measurements are accurate. A geospatial database is a database containing geospatial data that describes locations on the Earth's surface and can be used to create maps. For example, a geospatial database may include geospatial data describing geographical, geological, or meteorological features of locations on the Earth's surface, such as topography, altitude, weather, roads, railways, buildings, or bodies of water. In some embodiments, the geospatial database may be managed by a third party, such as a private or public sector organization. The accuracy evaluator module 180 can access the geospatial data from one or more geospatial databases through various methods. For example, the accuracy evaluator module may access the data through an application programming interface (API) or direct database access, or it may be exported to a locally managed database.

[0043] Where sensor location measurements include measurements indicating the location of a client device on the Earth's surface (e.g., longitude and latitude), the accuracy evaluator module 180 can compare other measurements in the sensor location measurement with corresponding values ​​for that location in a geospatial database to determine whether the sensor location measurement as a whole is accurate. For example, as noted above, sensor location measurements may include the longitude, latitude, and altitude of the client device. The accuracy evaluator module 180 can compare the altitude at that longitude and latitude in the sensor location measurement with altitudes listed in the geospatial database. If the difference between the altitudes exceeds a certain threshold, the accuracy evaluator module 180 determines that the sensor location measurement is inaccurate. The accuracy evaluator module 180 can use altitude data stored in a geospatial database (e.g., a digital elevation map (DEM) generated by a LiDAR survey) or map data obtained from an open-source online platform (such as Open Street Maps (OSM)).

[0044] Network 105 can be any type of communication network, such as a local area network (e.g., intranet), a wide area network (e.g., the Internet), or some combination thereof. The network may also include a direct connection between client device 110 and game server 120. Typically, communication between game server 120 and client device 110 can be performed via a network interface using any type of wired and / or wireless connection, using various communication protocols (e.g., TCP / IP, HTTP, SMTP, FTP), encoding or format (e.g., HTML, XML, JSON), and / or protection schemes (e.g., VPN, Secure HTTP, SSL).

[0045] This document discusses technologies involving servers, databases, software applications, and other computer-based systems, as well as actions taken and information sent to and from such systems. Those skilled in the art will recognize that the inherent flexibility of computer-based systems allows for a wide variety of possible configurations, combinations, and divisions of tasks and functions among and within components. For example, the server processes discussed herein can be implemented using a single server or a combination of multiple servers. Databases and applications can be implemented on a single system or distributed across multiple systems. Distributed components can run sequentially or in parallel.

[0046] Furthermore, in situations where the systems and methods discussed herein access and analyze personal information about users or utilize personal information (such as location information), users may be given the opportunity to control whether a program or feature collects information and to control whether and / or how content is received from the system or other applications. Such information or data will not be collected or used until the user has been provided with meaningful notification about what information will be collected and how it will be used. Information will not be collected or used unless the user provides consent, which can be withdrawn or modified by the user at any time. Therefore, users can control how information is collected and used by applications or systems. Additionally, information or data may be processed in one or more ways before it is stored or used, thereby removing personally identifiable information. For example, a user's identity may be processed to make it impossible to determine personally identifiable information for that user.

[0047] According to this disclosure, players can interact with a parallel reality game simply by carrying the client device 110 around in the real world. For example, a player can play the game by simply accessing an application associated with the parallel reality game on a smartphone and moving around in the real world with the smartphone. In this respect, players do not need to constantly observe the visual representation of the virtual world on a display screen to play location-based games. Therefore, the user interface can include multiple non-visual elements that allow the user to interact with the game. For example, the game interface can provide sound notifications to the player when they are approaching virtual elements or objects in the game, or when important events occur in the parallel reality game. Players can use audio controls to control these sound notifications. Different types of sound notifications can be provided to the user depending on the type of virtual element or event. The frequency or volume of the sound notifications can be increased or decreased depending on the player's proximity to the virtual element or object. Other non-visual notifications and signals, such as vibration notifications or other suitable notifications or signals, can also be provided to the user.

[0048] Those skilled in the art will appreciate, based on the disclosure provided herein, that many game interface configurations and underlying functionalities will become apparent from this disclosure. This disclosure is not intended to be limited to any particular configuration.

[0049] Figure 2 This is a conceptual diagram illustrating the process of determining the accurate geographic orientation of a client device relative to a reference frame according to some embodiments. As the client device moves along a path within a geographic area over a period of time, the client device generates multiple sensor position measurements and VIO data corresponding to the path taken by the client device. The sensor position measurements may be generated by the positioning module 140. Figure 1As described, the positioning module 140 can be configured to determine the actual or relative position of the client device using a navigation positioning system. VIO data may include images collected from the camera component and data collected from the sensor module 140 (e.g., IMU, accelerometer, gyroscope). The VIO data can be provided to the pose determination module 170 to determine multiple VIO position measurements of the client device relative to a reference frame. Figure 2 In the example shown, as the client device moves in the northeast direction, it collects a sequence of sensor position measurements 230A, 230B, 230C (collectively referred to as 230) and the corresponding VIO position measurements 220A, 220B, 220C (collectively referred to as 220).

[0050] This system can jointly optimize a sequence of sensor position measurements 230 to determine the geographic orientation of a client device relative to a reference frame. Compared to using a magnetometer, determining the orientation of the client device is not affected by miscalibration or interference from magnetized buildings and other structures. For example, a reference frame... Figure 2 The local coordinate system and global coordinate system of the client device are misaligned. Therefore, multiple sensor position measurements 230 and VIO position measurements 220 are misaligned, with each of the sensor position measurements 230A and its corresponding VIO position measurement 220A having a large difference 240A. To determine the accurate orientation of the client device, the system can determine a transformation between the local coordinate system used by the client device and the global coordinate system (e.g., a geographic coordinate system) based on the multiple sensor position measurements 230 and VIO position measurements 220. The system can use the determined transformation to align the axes of the local coordinate system and the global coordinate system (shown by 250), and transform points and vectors between the two coordinate systems. To improve the accuracy of the transformation, the system can filter out inaccurate sensor position measurements, considering only accurate sensor position measurements. The accuracy evaluator module 180 can be configured to determine the accuracy of the sensor position measurements and classify the position measurements according to their accuracy.

[0051] Sensor position measurements and corresponding VIO position measurements can be performed within predefined time intervals. Therefore, each sensor position measurement and corresponding VIO position measurement can be associated with a specific time. In some embodiments, the VIO position measurement 230 can be determined using VIO data captured on the client device 110. Example procedure for identifying inaccurate sensor position measurements

[0052] Figure 3This is a conceptual diagram illustrating a data flow to an accuracy evaluator module to generate a set of labeled sensor position measurements, according to some embodiments. As described above, the accuracy evaluator module 350 is configured to determine the accuracy of the sensor position measurements based on the corresponding VIO position measurements.

[0053] The accuracy evaluator module 350 receives a set of sensor position measurements 310 from the positioning module 140. These sensor position measurements indicate the position of the client device at a specific timestamp. For example, each sensor position measurement may be a Global Navigation Satellite System (GNSS) measurement captured by the client device's position sensor. Each sensor position measurement may include the longitude and latitude of the client device at the timestamp when the sensor position measurement was captured. In some embodiments, the sensor position measurements also include altitude measurements. The accuracy evaluator module 350 obtains a set of VIO position measurements 312 corresponding to this duration from the pose determination module 170. Figure 1 As depicted, the pose determination module 170 of the game server can estimate the pose of the client device 110 using VIO data collected from the camera components and sensor modules of the client device 110. VIO position measurements may also include the orientation and position of the client device.

[0054] The accuracy evaluator module 350 can also use geospatial data to determine the accuracy of the sensor location measurement 310. Figure 3 In the illustrated embodiment, the accuracy evaluator module 350 receives altitude data 322 and map data 324 from the geospatial database 320. For example... Figure 3 As described, the geospatial database 320 can contain geospatial data associated with physical features of the Earth's surface, including roads, buildings, water bodies, etc. For example, elevation data 322 can be obtained from a digital elevation map (DEM) generated by a LiDAR survey. In another example, map data can be obtained from an open-source online platform such as Open Street Map (OSM).

[0055] The accuracy evaluator module 350 can generate a set of labeled sensor position measurements 360, which may include sensor position measurements marked as accurate or inaccurate. The labeling process is described below. Figure 4 Further details are provided below.

[0056] Figure 4This is a flowchart illustrating a process, according to some embodiments, for generating a set of classified sensor position measurements for use in a world pose optimization algorithm. In one embodiment, process 400 may be performed by a computing device (e.g., game server 120), or it may be a group of distributed computing devices (e.g., virtual machines, distributed computing systems, cloud computing, etc.) working together to execute a set of instructions. Figure 4 The computing devices used in the process may include more than one computing device associated with the game server 120 or the client device 110.

[0057] The accuracy evaluator module receives multiple sensor position measurements 405 from the client device's position sensors. Each sensor position measurement may include latitude, longitude, or altitude measurements, and a timestamp corresponding to when the measurement was captured.

[0058] The accuracy evaluator module receives multiple VIO position measurements 410 from the client device. The pose determination module 170 can receive multiple VIO position measurements from the client device.

[0059] The accuracy evaluator module calculates a set 415 of sensor position transitions based on the received sensor position measurements. Sensor position transitions represent the differences between sequential pairs of sensor position measurements. For example, a sensor position transition could be a vector representing the change in the position of the client device from one sensor position measurement to the next. In embodiments where sensor position measurements also include pose data, the sensor position transitions could also reflect changes in the orientation of the client device.

[0060] The accuracy evaluator module calculates sensor position transitions based on sequential sensor position measurement pairs. A sequential sensor position measurement pair refers to sensor position measurements captured in chronological order. For example, if the client device captures sensor position transitions periodically (i.e., based on regular time intervals), the client device can identify consecutively captured sensor position measurements as a sequential pair of sensor position measurements. Alternatively, a sequential sensor position measurement pair can also be sensor position measurements corresponding to a time near when the corresponding VIO measurement was measured. For example, sequential sensor position measurement pairs can be selected based on their timestamps, such that the timestamp of the selected sensor position measurement is closest to the timestamp of the corresponding VIO position measurement pair.

[0061] The accuracy evaluator module calculates a set 420 of VIO position transitions based on VIO position measurements. Similar to sensor position transitions, VIO position transitions represent the differences between sequential VIO position measurement pairs. VIO position transitions can also be vectors representing changes in the position of the client device from one VIO position measurement to the next, and can also reflect changes in the device's orientation. The selection of sequential VIO position measurement pairs is similar to the selection of sequential sensor position measurement pairs. For example, sequential pairs can be selected as consecutive measurements captured by the client device, or they can be selected such that their timestamps match the timestamps of the corresponding sensor position measurements.

[0062] The accuracy evaluator module identifies which sensor position transition corresponds to each VIO position transition and generates measurement discrepancies based on the corresponding position transition pairs. The accuracy evaluator module 350 can identify corresponding position transition pairs based on the timestamps of the corresponding sensor position measurements and VIO position measurements. For example, the accuracy evaluator module can identify the VIO position transition whose timestamp is closest to the timestamp of the sensor position transition for each sensor position transition (and vice versa). Alternatively, the accuracy evaluator module 350 can identify the VIO position transition whose coverage time period overlaps most with the time period of the sensor position transition for each sensor position transition (and vice versa).

[0063] The accuracy evaluator module generates measurement differences 430 based on the corresponding position transition pairs. These measurement differences are differences between position transitions and therefore represent the differences in the estimated paths taken by the client device based on sensor position measurements and VIO position measurements. These differences can be vectors representing the differences between vectors of sensor position transitions and VIO position transitions.

[0064] The accuracy evaluator module compares the measurement difference to a threshold difference and marks each sensor position measurement as accurate or inaccurate based on whether its corresponding measurement difference exceeds the threshold difference. Therefore, sensor position measurements with measurement differences exceeding the threshold can be marked as inaccurate, while other sensor position measurements can be marked as accurate. Thus, the accuracy evaluator module identifies measurement differences exceeding the threshold 435 and marks the sensor position measurements corresponding to the identified measurement differences as inaccurate 440. In some embodiments, instead of labeling all sensor position measurements as accurate, the accuracy evaluator module filters out inaccurate sensor position measurements and produces a filtered set of sensor position measurements that includes only accurate sensor position measurements.

[0065] Game servers can use accuracy labels on sensor location measurements to determine when location sensors are temporarily malfunctioning. For example, if a threshold number of sensor location measurements are flagged as inaccurate for a specific time period, the game server can determine that a client device is located in an area where the location sensors cannot accurately measure the client device's location (e.g., because the client device is near a large building that makes it difficult for the location sensors to connect to satellites). When determining the client device's location for a period after the location sensor was determined to be inaccurate based on the accuracy label, the game server can ignore the sensor location measurements. Similarly, the game server can notify the client device that the user location sensor cannot generate accurate measurements, or it can disable the functionality of services provided by the game server until the sensor location measurements are determined to be sufficiently accurate again.

[0066] In some embodiments, other types of reference measurements (such as altitude data) may be used alone or in combination with VIO location measurements to determine the accuracy of sensor location measurements. For example, for a set of sensor location measurements, each having latitude, longitude, and altitude measurements, the accuracy evaluator module 350 may access a geospatial database to retrieve altitude measurements corresponding to the latitude and longitude measurements of each sensor location measurement in the set of sensor location measurements. In some embodiments, the accuracy evaluator module may generate a set of measurement discrepancies by calculating the difference between each altitude measurement of the sensor location measurements and the corresponding known altitude obtained from the geospatial database. The accuracy evaluator module may identify measurement discrepancies in the set of measurement discrepancies that exceed a predefined threshold and may mark the sensor location measurements corresponding to the measurement discrepancies as inaccurate.

[0067] In some embodiments, the accuracy evaluator module calculates an accuracy score for each sensor position measurement. The accuracy score is a score reflecting the likelihood that the sensor position measurement is accurate. In one embodiment, the accuracy score may include an error estimate. The accuracy score can be used to determine the weight of an associated sensor position measurement, which determines the impact of the sensor position measurement on the resulting transformation. For example, if a first sensor position measurement is assigned a higher error estimate compared to a second sensor position measurement, the more accurate second sensor position measurement is assigned a higher weight and has a greater impact on the resulting transformation. Example process for identifying inaccurate satellite signals

[0068] Figure 5This is a flowchart illustrating a process for identifying inaccurate satellite signals from multiple satellite signals according to some embodiments. In some embodiments, in addition to generating a set of classified sensor position measurements, the client device is also configured to implement a combined search method to identify inaccurate satellite signals from multiple received satellite signals from satellites orbiting the Earth. In some embodiments, process 500 may be performed by a computing device (e.g., game server 120), or it may be performed by a group of distributed computing devices (e.g., virtual machines, distributed computing systems, cloud computing, etc.) working together to execute a set of instructions. Figure 5 The computing devices used in the process may include more than one computing device associated with the game server 120 or the client device 110.

[0069] The client device receives a set 505 of satellite signals from each of a plurality of satellites. These satellite signals are signals transmitted by the plurality of satellites and captured by the client device's position sensors. For example, the satellite signals may be signals from GNSS satellites. The satellite signals include information that enables the client device to generate sensor position measurements describing the client device's position. For example, the satellite signals may include navigation messages, which include data such as satellite clock data, ephemeris data, satellite almanac data, etc. In some embodiments, the client device 110 receives the transmitted signals and decodes them to extract the necessary data for calculating the client device's position. The client device 110 may determine its position at a specific timestamp by combining signals from at least four satellites corresponding to a specific timestamp.

[0070] The client device generates multiple subsets 510 of the satellite signal set. Each subset excludes at least one satellite signal from the received satellite signals. For example, if the client device receives a set of satellite signals from satellites A, B, C, D, and E, the client device can generate subsets containing four of the five original satellite signals, such as {A, B, C, D}, {A, B, C, E}, {A, B, D, E}, {A, C, D, E}, and {B, C, D, E}. The client device can generate every possible subset of the signal set or can apply heuristics to limit the number of subsets it generates.

[0071] The client device calculates the sensor position measurement based on each subset of multiple subsets of the satellite signal set. (Example 515) Figure 1 As described herein, the client device can use methods such as trilateration, multilateral measurement, etc., to calculate the sensor position measurement of the client device using a set of satellite signals. Each sensor position measurement may include latitude, longitude, or altitude measurements corresponding to a time measurement.

[0072] The client device calculates an accuracy score 520 for each sensor position measurement in the sensor position measurement based on a corresponding subset of satellite signals. The accuracy score reflects the likelihood that the sensor position measurement is accurate. In some embodiments, the accuracy score is an accuracy label, and as per [reference to...] Figure 4 The accuracy score described is calculated. Alternatively, the client device can estimate the accuracy score for the sensor position measurement directly based on the satellite signals. For example, the client device can compare a subset of satellite signals with historical data describing satellite signals captured by other client devices. This historical data can be flagged as to whether the captured satellite signals include inaccurate signals. The client device can compare the satellite signals in each subset of satellite signals with the historical data to calculate the accuracy score for each subset. In some embodiments, the client device uses a machine learning model trained to predict the accuracy score for a subset of satellite signals based on labeled historical data.

[0073] In one embodiment, the client device uses a machine learning model or geometric algorithm to model expected sensor location measurement behavior based on historical data, such as determining the spatial distribution of incorrect sensor location measurements. For example, it can be observed that the client's sensor location measurements at a particular location are often inaccurately located due to reflections from surrounding buildings (e.g., in the middle of a road). Therefore, due to inaccurate satellite measurements, a subset of satellite signals that cause the sensor location measurements to be inaccurate can be identified.

[0074] In another example, the client device can use ephemeris data to identify the correlation between the error rate of sensor position measurements and the positions of satellites. For instance, it can be observed that at a particular location, signals from satellites located to the east of the client device exhibit lower reliability compared to signals from satellites located in other directions relative to the client device. Therefore, the client device can exclude satellite signals received from satellites located to the east of the client device when determining its own position.

[0075] The client device identifies satellite signals in the satellite signal set as inaccurate based on an accuracy score for sensor position measurements corresponding to a subset of satellite signals including the identified satellite signals. The client device can identify inaccurate satellite signals by identifying which subsets of satellite signals are accurate and which satellite signals are excluded from the identified subsets. For example, the client device can identify sensor position measurements associated with subset {A, C, D, E} as accurate and the remaining subsets as inaccurate. The client device can identify satellite signal B as common to the inaccurate subsets, thus determining that signal B is an inaccurate satellite signal. The client device can then use the subset of satellite signals without inaccurate satellite signals to determine its own position.

[0076] If the client device identifies a satellite signal as inaccurate, it can also perform remedial action 530 regarding the identified satellite signal. For example, the client device can ignore future satellite signals from the satellite that generated the signal within a specific time period. That is, for a period of time after determining that the satellite signal is inaccurate, the client device can filter signals from that satellite from those signals used to determine the client device's location. Similarly, the client device can ignore future satellite signals from that satellite until the client device has moved far away from its location threshold distance, or has moved to a substantially different location, so that whatever is causing the inaccuracy of the signal from that satellite is no longer a problem. In some embodiments, the client device uses other sources of information about its location to locate itself. For example, the client device can begin using VIO data or IMU sensor data to determine its location. Example computing system

[0077] Figure 6 This is an example architecture of a computing device according to some embodiments. Although Figure 6 A high-level block diagram illustrating some or all of the physical components of a computer used as one or more entities described herein is depicted; however, according to embodiments, the computer may have... Figure 6 Additional parts, fewer parts, or variations of the components provided. Although Figure 6 A computer 600 is depicted, but this figure is intended as a functional description of the various features that may exist in a computer system, rather than a structural diagram of the implementation described herein. In fact, and as those skilled in the art will recognize, items shown individually can be combined, and some items can be separated.

[0078] Figure 6The diagram shows at least one processor 602 coupled to chipset 604. Additionally, memory 606, storage device 608, keyboard 610, graphics adapter 612, pointing device 614, and network adapter 616 are also coupled to chipset 604. Display 618 is coupled to graphics adapter 612. In one embodiment, the functionality of chipset 604 is provided by memory controller hub 620 and I / O hub 622. In another embodiment, memory 606 is directly coupled to processor 602, rather than chipset 604. In some embodiments, computer 600 includes one or more communication buses for interconnecting these components. The one or more communication buses may optionally include circuitry (sometimes referred to as chipset) for interconnecting system components and controlling communication between system components.

[0079] Storage device 608 is any non-volatile computer-readable storage medium, such as a hard disk, optical disc read-only memory (CD-ROM), DVD, or solid-state storage device or other optical storage, magnetic tape cassette, magnetic tape, disk storage or other magnetic storage device, disk storage device, optical disc storage device, flash memory device or other non-volatile solid-state storage device. Such storage device 608 may also be referred to as persistent memory. Pointing device 614 may be a mouse, trackball, or other type of pointing device, and is used in conjunction with keyboard 610 to input data into computer 600. Graphics adapter 612 displays images and other information on monitor 618. Network adapter 616 couples computer 600 to a local area network (LAN) or wide area network (WAN).

[0080] Memory 606 stores instructions and data used by processor 602. Memory 606 may be non-persistent memory, examples of which include high-speed random access memory (DRAM, SRAM, DDR RAM, ROM, EEPROM, and flash memory).

[0081] As is known in the art, computer 600 may have the same... Figure 6 The different components and / or other components shown are not included. Furthermore, computer 600 may be missing certain components shown. In one embodiment, computer 600 used as a server may lack keyboard 610, pointing device 614, graphics adapter 612, and / or display 618. Additionally, storage device 608 may be located locally and / or remotely (e.g., within a storage area network (SAN)) of computer 600.

[0082] As is known in the art, computer 600 is adapted to execute computer program modules to provide the functions described herein. As used herein, the term "module" refers to computer program logic for providing specified functions. Thus, modules can be implemented in hardware, firmware, and / or software. In one embodiment, a program module is stored on storage device 608, loaded into memory 606, and executed by processor 602. Additional configuration information

[0083] The foregoing description of the embodiments has been presented for illustrative purposes; it is not intended to be exhaustive or to limit the patent right to the precise form disclosed. Those skilled in the art will appreciate that many modifications and variations can be made in consideration of the above disclosure.

[0084] Some portions of this specification describe embodiments based on algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the art of data processing to effectively communicate the essence of their work to others skilled in the art. While these operations are described in a functional, computational, or logical manner, they are understood to be implemented by computer programs or equivalent circuits, microcode, etc. Furthermore, it has sometimes proven convenient, without loss of generality, to arrange these operations as modules. The described operations and their associated modules can be embodied in software, firmware, hardware, or any combination thereof.

[0085] Any of the steps, operations, or processes described herein may be performed or implemented using one or more hardware or software modules, alone or in combination with other devices. In one embodiment, the software module is implemented using a computer program product comprising a computer-readable medium containing computer program code that can be executed by a computer processor to perform any or all of the steps, operations, or processes described herein.

[0086] The embodiments may also relate to means for performing the operations described herein. This means may be specifically constructed for the desired purpose, and / or it may include a general-purpose computing device selectively activated or reconfigured by a computer program stored in a computer. Such a computer program may be stored in a non-transitory, tangible, computer-readable storage medium, or in any type of medium suitable for storing electronic instructions, which may be coupled to a computer system bus. Furthermore, any computing system mentioned in the specification may include a single processor, or may be an architecture employing multiple processors to enhance computing power.

[0087] The embodiments may also relate to products generated by the computational processes described herein. Such products may include information obtained by the computational processes, wherein the information is stored on a non-transitory, tangible, computer-readable storage medium, and may include any embodiment of the computer program product or other combination of data described herein.

[0088] Finally, the language used in this specification has been chosen primarily for readability and instruction purposes, and may not have been selected to define or limit the patent rights. Therefore, the scope of the patent rights is not intended to be limited by this specific embodiment, but rather by any claims made based on this application. Thus, the disclosure of the embodiments is intended to illustrate, and not limit, the scope of the patent rights, which are set forth in the appended claims.

Claims

1. A method comprising: Receive multiple sensor location measurements of the client device, measured by the location sensor of the client device, wherein each sensor location measurement includes the geographic location of the client device as measured by the location sensor; Receive multiple visual inertial odometry (VIO) position measurements from the client device, wherein each VIO position measurement is determined based on VIO data captured by the client device; Calculate a set of sensor position transitions, where each sensor position transition is the difference between sequential pairs of sensor position measurements among the plurality of sensor position measurements; Calculate a set of VIO position transitions, where each VIO position transition is the difference between sequential VIO position measurement pairs among the plurality of VIO position measurements; Calculate the difference between each sensor position transition in the sensor position transition set and the corresponding VIO position transition in the VIO position transition set; The difference between the sensor position transition and the VIO position transition exceeds a threshold. as well as In response to the determination, the sensor position measurement corresponding to the difference is marked as inaccurate.

2. The method of claim 1, wherein the plurality of sensor position measurements include measurements captured by the Global Navigation Satellite System (GNSS) sensors of the client device.

3. The method of claim 1, wherein the VIO data includes visual data and sensor data captured by the client device.

4. The method of claim 1, wherein each of the plurality of sensor position measurements includes a height component, and wherein the method further comprises: For each of the sensor position measurements: Receive altitude values ​​from a third-party database, wherein the altitude values ​​correspond to the geographic location measured by the sensor location; Calculate the difference between the received height value and the height component measured by the sensor position; as well as In response to the difference exceeding a threshold, the sensor position measurement is marked as inaccurate.

5. The method of claim 1, wherein each of the plurality of sensor position transformations includes a vector between the corresponding pairs of sensor position measurements.

6. The method according to claim 1, further comprising: In response to marking the sensor position measurement as inaccurate, a feature of the client application running on the client device is disabled.

7. The method according to claim 1, further comprising: In response to marking the sensor position measurement as inaccurate, the user of the client device is notified that the sensor position measurement by the position sensor is inaccurate.

8. The method of claim 1, wherein calculating the difference between the sensor position transition and the corresponding VIO position transition comprises: Based on the timestamps of the corresponding sensor position measurement and the corresponding VIO position measurement, a VIO position transition is identified for each sensor position transition in the sensor position transition set.

9. A non-transitory computer-readable storage medium comprising processor-executable storage instructions, the storage instructions being executable to perform operations, the operations including: Receive multiple sensor location measurements of the client device, measured by the location sensor of the client device, wherein each sensor location measurement includes the geographic location of the client device as measured by the location sensor; Receive multiple visual inertial odometry (VIO) position measurements from the client device, wherein each VIO position measurement is determined based on VIO data captured by the client device; Calculate a set of sensor position transitions, where each sensor position transition is the difference between sequential pairs of sensor position measurements among the plurality of sensor position measurements; Calculate a set of VIO position transitions, where each VIO position transition is the difference between sequential VIO position measurement pairs among the plurality of VIO position measurements; Calculate the difference between each sensor position transition in the sensor position transition set and the corresponding VIO position transition in the VIO position transition set; The difference between the sensor position transition and the VIO position transition exceeds a threshold. as well as In response to the determination, the sensor position measurement corresponding to the difference is marked as inaccurate.

10. The non-transitory computer-readable storage medium of claim 9, wherein the plurality of sensor position measurements include measurements captured by GNSS sensors of the client device.

11. The non-transitory computer-readable storage medium of claim 9, wherein the VIO data includes visual data and sensor data captured by the client device.

12. The non-transitory computer-readable storage medium of claim 9, wherein each of the plurality of sensor position measurements includes a height component, and wherein the operation further comprises: For each of the sensor position measurements: Receive altitude values ​​from a third-party database, wherein the altitude values ​​correspond to the geographic location measured by the sensor location; Calculate the difference between the received height value and the height component measured by the sensor position; as well as In response to the difference exceeding a threshold, the sensor position measurement is marked as inaccurate.

13. The non-transitory computer-readable storage medium of claim 9, wherein each of the plurality of sensor position transitions comprises a vector between corresponding pairs of sensor position measurements.

14. The non-transitory computer-readable storage medium according to claim 9, wherein the operation further comprises: In response to marking the sensor position measurement as inaccurate, a feature of the client application running on the client device is disabled.

15. The non-transitory computer-readable storage medium according to claim 9, wherein the operation further comprises: In response to marking the sensor position measurement as inaccurate, the user of the client device is notified that the sensor position measurement by the position sensor is inaccurate.

16. The non-transitory computer-readable storage medium of claim 9, wherein calculating the difference between the sensor position transition and the corresponding VIO position transition comprises: Based on the timestamps of the corresponding sensor position measurement and the corresponding VIO position measurement, a VIO position transition is identified for each sensor position transition in the sensor position transition set.

17. A computer system comprising: At least one processor; as well as A non-transitory computer-readable storage medium, the non-transitory computer-readable storage medium including processor-executable storage instructions, the storage instructions being executable to perform operations, the operations including: Receive multiple sensor location measurements of the client device as measured by the location sensor of the client device, wherein each sensor location measurement includes the geographic location of the client device as measured by the location sensor; Receive multiple visual inertial odometry (VIO) position measurements from the client device, wherein each VIO position measurement is determined based on VIO data captured by the client device; Calculate a set of sensor position transitions, where each sensor position transition is the difference between sequential pairs of sensor position measurements among the plurality of sensor position measurements; Calculate a set of VIO position transitions, where each VIO position transition is the difference between sequential VIO position measurement pairs among the plurality of VIO position measurements; Calculate the difference between each sensor position transition in the sensor position transition set and the corresponding VIO position transition in the VIO position transition set; Determine that the difference between the sensor position transition and the VIO position transition exceeds a threshold; and In response to the determination, the sensor position measurement corresponding to the difference is marked as inaccurate.

18. The computer system of claim 17, wherein the plurality of sensor position measurements include measurements captured by the Global Navigation Satellite System (GNSS) sensors of the client device.

19. The computer system of claim 17, wherein the VIO data includes visual data and sensor data captured by the client device.

20. The computer system of claim 17, wherein each of the plurality of sensor position measurements includes a height component, and wherein the operation further comprises: For each of the sensor position measurements: Receive altitude values ​​from a third-party database, wherein the altitude values ​​correspond to the geographic location measured by the sensor location; Calculate the difference between the received height value and the height component measured by the sensor position; as well as In response to the difference exceeding a threshold, the sensor position measurement is marked as inaccurate.

21. A method comprising: Receive a set of satellite signals including satellite signals from each of multiple satellites, wherein each satellite signal is captured by a position sensor of a client device; Generate multiple subsets of the satellite signal set, wherein each subset excludes at least one satellite signal from the satellite signal set; The sensor position measurement is calculated based on each of the plurality of subsets of the satellite signal set; An accuracy score is calculated for each sensor position measurement in the sensor position measurement based on the corresponding subset of satellite signals. Based on the accuracy score for the sensor location measurement corresponding to the subset of satellite signals including the identified satellite signals, satellite signals in the set of satellite signals are identified as inaccurate; as well as In response to identifying the satellite signal as inaccurate, remedial actions are performed on the identified satellite signal.

22. The method of claim 21, wherein calculating the accuracy score for the sensor position measurement comprises: The accuracy score for the sensor position measurement is calculated based on the corresponding VIO position measurement.

23. The method of claim 21, wherein calculating the accuracy score for the sensor position measurement comprises: A machine learning model is applied to the subset of satellite signals corresponding to sensor position measurements, wherein the machine learning model is trained based on historical data to generate an accuracy score for the set of satellite signals based on the satellite signals.

24. The method of claim 21, wherein performing the remedial action comprises: For a period of time, signals from the satellite associated with the identified satellite signal are ignored in order to locate the client device.

25. The method of claim 21, further comprising: The location of the client device is determined based on a subset of the multiple satellite signals, excluding the identified satellite signals.

26. The method of claim 25, wherein performing the remedial action comprises: Signals from the satellite associated with the identified satellite signal are ignored until the client device moves away from the determined location threshold distance of the client device, in order to locate the client device.

27. The method of claim 21, wherein performing the remedial action comprises: The client device captures VIO data for locating the client device.

28. The method of claim 21, wherein identifying the satellite signal based on the accuracy score comprises: The accuracy score indicating the sensor position measurement is used to identify the sensor position measurement; as well as Identify the satellite signals that are excluded from the subset of satellite signals corresponding to the identified sensor location.

29. A non-transitory computer-readable storage medium, the non-transitory computer-readable storage medium comprising processor-executable storage instructions, the storage instructions being executable to perform an operation, the operation comprising: Receive a set of satellite signals including satellite signals from each of multiple satellites, wherein each satellite signal is captured by a position sensor of a client device; Generate multiple subsets of the satellite signal set, wherein each subset excludes at least one satellite signal from the satellite signal set; The sensor position measurement is calculated based on each of the plurality of subsets of the satellite signal set; An accuracy score is calculated for each sensor position measurement in the sensor position measurement based on the corresponding subset of satellite signals. Based on the accuracy score for the sensor location measurement corresponding to the subset of satellite signals including the identified satellite signals, satellite signals in the set of satellite signals are identified as inaccurate; as well as In response to identifying the satellite signal as inaccurate, remedial actions are performed on the identified satellite signal.

30. The non-transitory computer-readable storage medium of claim 29, wherein calculating the accuracy score for the sensor position measurement comprises: The accuracy score for the sensor position measurement is calculated based on the corresponding VIO position measurement.

31. The non-transitory computer-readable storage medium of claim 29, wherein calculating the accuracy score for the sensor position measurement comprises: A machine learning model is applied to the subset of satellite signals corresponding to sensor position measurements, wherein the machine learning model is trained based on historical data to generate an accuracy score for the set of satellite signals based on the satellite signals.

32. The non-transitory computer-readable storage medium of claim 29, wherein performing the remedial action comprises: For a period of time, signals from the satellite associated with the identified satellite signal are ignored in order to locate the client device.

33. The non-transitory computer-readable storage medium according to claim 29, further comprising: The location of the client device is determined based on a subset of the multiple satellite signals, excluding the identified satellite signals.

34. The non-transitory computer-readable storage medium of claim 33, wherein performing the remedial action comprises: Signals from the satellite associated with the identified satellite signal are ignored until the client device moves away from the determined location threshold distance of the client device, in order to locate the client device.

35. The non-transitory computer-readable storage medium of claim 29, wherein performing the remedial action comprises: The client device captures VIO data for locating the client device.

36. The non-transitory computer-readable storage medium of claim 29, wherein identifying the satellite signal based on the accuracy score comprises: The accuracy score indicating the sensor position measurement is used to identify the sensor position measurement; as well as Identify the satellite signals that are excluded from the subset of satellite signals corresponding to the identified sensor location.

37. A computer system comprising: At least one processor; as well as A non-transitory computer-readable storage medium, the non-transitory computer-readable storage medium including processor-executable storage instructions, the storage instructions being executable to perform operations, the operations including: Receive a set of satellite signals including satellite signals from each of multiple satellites, wherein each satellite signal is captured by a position sensor of a client device; Generate multiple subsets of the satellite signal set, wherein each subset excludes at least one satellite signal from the satellite signal set; The sensor position measurement is calculated based on each of the plurality of subsets of the satellite signal set; An accuracy score is calculated for each sensor position measurement in the sensor position measurement based on the corresponding subset of satellite signals. Based on the accuracy score for the sensor location measurement corresponding to a subset of satellite signals including the identified satellite signals, satellite signals in the satellite signal set are identified as inaccurate; and In response to identifying the satellite signal as inaccurate, remedial actions are performed on the identified satellite signal.

38. The computer system of claim 37, wherein calculating the accuracy score for the sensor position measurement comprises: An accuracy score for the sensor position measurement is calculated based on the corresponding VIO position measurement.

39. The computer system of claim 37, wherein calculating the accuracy score for the sensor position measurement comprises: A machine learning model is applied to the subset of satellite signals corresponding to sensor position measurements, wherein the machine learning model is trained based on historical data to generate an accuracy score for the set of satellite signals based on the satellite signals.

40. The computer system of claim 37, wherein performing the remedial action comprises: For a period of time, signals from the satellite associated with the identified satellite signal are ignored in order to locate the client device.