Position measurement error detection
Patent Information
- Application Number
- JP2026512366
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-11-29
- Filing Date
- 2024-08-22
- Publication Date
- 2026-09-09
Smart Images

Figure 2026530618000001_ABST
Abstract
Description
Technical Field
[0001] (CROSS-REFERENCE TO RELATED APPLICATIONS) This application claims the benefit of U.S. Provisional Application No. 63 / 578,122 filed on August 22, 2023, U.S. Application No. 18 / 523,792 filed on November 29, 2023, and U.S. Application No. 18 / 523,795 filed on November 29, 2023, all of which are hereby incorporated by reference in their entireties into this specification.
[0002] The present disclosure relates generally to device localization, and more specifically to determining the accuracy of position measurement.
Background Art
[0003] Augmented reality (AR) technology has advanced rapidly in recent years and has been widely adopted across various industries. An online system can track the position and orientation (collectively "pose") of a user's device in the physical world to provide services to users. The system can overlay virtual elements onto a representation of a real-world environment. Specifically, the online system can display virtual elements on a video feed captured by a user device and displayed to the user such that the virtual elements appear to be located within the physical world. The online system correctly displays the virtual elements using the device's pose. However, AR applications face challenges with respect to the accuracy of tracking a device's pose as the device moves around a geographic area. For example, measurements from a Global Navigation Satellite System (GNSS) are often inaccurate or incorrect due to environmental factors, making it difficult to determine the accurate pose of a device using the GNSS measurements. Environmental factors include structures such as high-rise buildings that can reflect or block GNSS satellite signals and cause multipath interference. Accordingly, devices located indoors or surrounded by buildings may suffer from reduced GNSS measurement accuracy, which adversely affects 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 verify the accuracy of the sensor position measurements. Sensor position measurements are measurements captured by the client device's position sensor. For example, sensor position measurements are GNSS measurements captured by a GNSS sensor on the client device. The client device captures a set of sensor position measurements and generates transformations between these measurements. These transformations represent the change between consecutive pairs of position measurements. For example, the transformation could be a vector representing the change from the position of the first measurement to the position of the second measurement.
[0005] The client device also captures VIO position measurements and, similarly, generates conversions between VIO measurements. The client device identifies the VIO position conversion corresponding to each sensor position conversion and calculates the difference between them to determine if they are sufficiently different to indicate that the sensor position measurement is likely inaccurate. For example, if the difference between the sensor position conversion and the VIO position conversion exceeds a certain threshold, the client device may label the sensor position measurement corresponding to the sensor position conversion as inaccurate. If the client device identifies an inaccurate sensor position measurement, it may take certain corrective 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 to prevent other satellite signals from the same satellite from being used to locate the client device. For example, a client device may receive a set of satellite signals from a set of satellites and generate subsets from each set, excluding one of the satellite signals. The client device generates sensor position measurements for each subset and a precision score for each of these measurements. The client device then identifies inaccurate sensor signals based on the precision scores of the subsets. For example, the client device may identify a subset with a precision score indicating that the corresponding sensor position measurement is accurate, thereby determining that the satellite signals excluded from that subset were inaccurate.
[0007] Comparing sensor position measurements to VIO position measurements allows for more effective identification of when a position sensor is capturing inaccurate measurements. While VIO systems tend to be very effective at measuring device movement, they generally cannot provide the absolute position of a device. Instead, VIO systems tend to produce measurements that indicate the position of a device relative to some point (e.g., some starting point). In contrast, sensor position measurements such as GNSS measurements can provide the absolute position of a device on Earth, but if sensor position measurements are inaccurate, those inaccuracies tend to be independent of each other between measurements. Therefore, by identifying discrepancies in movement between the client device and the position sensor, such as those determined by the VIO system, the client device can more effectively identify inaccuracies in measurements by the position sensor.
[0008] Furthermore, by identifying satellites that are transmitting inaccurate signals (for example, because the signals are reflected off landmarks such as nearby buildings), client devices can take these inaccurate signals into account when determining location using a set of satellite signals. Therefore, client devices may be more efficient at localizing themselves and can provide users with more accurate location-based services. [Brief explanation of the drawing]
[0009] [Figure 1] This figure shows a networked computer environment 100 in one or more embodiments. [Figure 2] This figure shows a concept illustrating the process of determining the precise geographic orientation of a client device relative to a reference frame, according to several embodiments. [Figure 3] This figure shows a conceptual diagram illustrating the operation of an accuracy evaluation module according to several embodiments. [Figure 4] This flowchart shows a process for generating a set of classified sensor position measurements for use in a world attitude optimization algorithm, according to several embodiments. [Figure 5] This flowchart shows a process for identifying inaccurate satellite signals from multiple satellite signals, according to several embodiments. [Figure 6] This figure shows an example of a computer device architecture in several embodiments.
[0010] The drawings illustrate various embodiments for illustrative purposes only. Those skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein can be employed without departing from the principles described herein. [Modes for carrying out the invention]
[0011] Various embodiments are described in the context of parallel reality games that include augmented reality content in a virtual world geography parallel to at least a portion of real-world geography, such that the movements and actions of real-world players affect actions in the virtual world, and vice versa. Using the disclosures provided herein, those skilled in the art will understand that the subject matter described is applicable to other situations where magnetic field measurements are desirable. 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. In addition, the inherent flexibility of computer-based systems allows for a wide variety of possible configurations, combinations, and divisions of tasks and functions between the components of the system. For example, systems and methods according to embodiments of this disclosure can be implemented using a single computer device or across multiple computer devices (e.g., connected by a computer network).
[0012] (System Overview) Figure 1 shows a networked computer environment 100 in one or more embodiments. While Figure 1 shows a parallel reality game environment as an example, the described methods / systems may be used in other contexts. In practice, as those skilled in the art will recognize, a networked computer environment may have additional components, fewer components, or variations thereof in addition to the components shown in Figure 1. Also, although each component in the networked computer environment 100 is described in the singular, the networked computer environment 100 may contain one or more of each of the components. Furthermore, the functionality of each component may be divided in ways different from the following description. For example, a client device may determine the accuracy of its sensor position measurement by locally measuring the accuracy of the sensor position measurement on the client device, or by sending the measurement to a remote server (e.g., a game server 120).
[0013] The networked computer environment 100 provides interaction with a player in a virtual world having geography parallel to the real world. In particular, geographical regions of the real world may be directly linked to or mapped to corresponding regions of the virtual world. The player may move within the virtual world by moving to various geographical locations in the real world. For example, the player's location in the real world may be tracked and used to update the player's location in the virtual world. Typically, the player's location in the real world is determined by finding the location of the client device 110 with which the player is interacting with the virtual world and assuming that the player is in the same (or nearly the same) location. For example, in various embodiments, if the player's location in the real world is within a threshold distance (e.g., 10 meters, 20 meters, etc.) from the real-world location corresponding to the virtual location of a virtual element in the virtual world, the player may interact with the virtual element. For convenience, various embodiments will be described with reference to “player location,” but those skilled in the art will understand that such reference refers to the location of the player’s client device 110.
[0014] The networked computer environment 100 uses a client-server structure, where the game server 120 communicates with client devices 110 via the network 105 and provides players with a parallel reality game on the client devices 110. The networked computer environment 100 may also include other external systems such as sponsor / advertiser systems or business systems. Although only one client device 110 is shown in Figure 1, any number of client devices 110 or other external systems may be connected to the game server 120 via the network 105. Furthermore, the networked computer environment 100 may include different or additional elements, and functionality may be distributed between the client devices 110 and the server 120 in ways different from those described below.
[0015] The client device 110 may be any portable computer device that can be used by a player to interact with the game server 120. For example, the client device 110 may be a wireless device, a personal digital assistant (PDA), a portable gaming device, a mobile phone, a smartphone, a tablet, a navigation system, a handheld GPS system, a wearable computer device, a display having one or more processors, or other such device. In another example, the client device 110 includes a conventional computer system such as a desktop or laptop computer. Furthermore, the client device 110 may be a vehicle having a computer device. In short, the client device 110 may be any computer device or system that can enable a player to interact with the game server 120. As a computer device, the 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 processors to perform actions. The client device 110 is preferably a portable computer device that a player can easily carry or otherwise transport, such as a smartphone or a tablet.
[0016] The client device 110 communicates with the game server 120 and provides the game server 120 with sensory data of the physical environment. The client device 110 includes a camera assembly 125 that captures two-dimensional image data of the scene in the physical environment in which the client device 110 resides. In the embodiment shown in Figure 1, each client device 110 includes a sensor module 130 and software components such as a gaming module 135 and a positioning module 140. The client device 110 may include various other input / output devices for receiving information from and / or providing information to the player. Exemplary input / output devices include a display screen, touchscreen, touchpad, data entry keys, speaker, and microphone suitable for speech recognition. The client device 110 may further include a network interface for providing communication over the network 105. The network interface may include, for example, a transmitter, receiver, port, controller, antenna, or other suitable components for interface with one or more networks.
[0017] The camera assembly 125 captures image data of the scene in the environment where the client device 110 is located. The camera assembly 125 may utilize various photosensors having various color capture ranges at various capture rates. The camera assembly 125 may include a wide-angle lens or a telephoto lens. The camera assembly 125 may be configured to capture a single image or video as image data. Furthermore, the orientation of the camera assembly 125 may be parallel to the ground with the camera assembly 125 facing the horizon. The camera assembly 125 captures image data and shares this image data with a computer device on the client device 110. The image data may be accompanied by metadata indicating other details of the image data, including sensory data (e.g., temperature, ambient brightness) or capture data (e.g., exposure, warmth, shutter speed, focal length, capture time, etc.). The camera assembly 125 may include one or more cameras capable of capturing image data. In one example, the camera assembly 125 includes one camera and is configured to capture monocular image data. In another example, the camera assembly 125 includes two cameras configured to capture stereoscopic image data. In various other embodiments, the camera assembly 125 includes multiple cameras, each configured to capture image data.
[0018] The client device 110 includes a sensor module 130 which may include various sensors for recording data from the client device 110. These various sensors include, but are not limited to, position sensors, motion sensors, accelerometers, gyroscopes, other inertial measuring units (IMUs), barometers, positioning systems, thermometers, light sensors, and depth sensors. A position sensor is a sensor that generates a sensor position measurement indicating the location of the client device 110. For example, each sensor position measurement may include the longitude, latitude, or altitude of the client device 110, and may also include a timestamp describing when the sensor position measurement was captured.
[0019] The position sensor may be a Global Navigation Satellite System (GNSS) sensor that estimates the position of the client device 110 using signals from satellites. The GNSS sensor receives satellite signals transmitted from GNSS satellites orbiting the Earth. The GNSS sensor includes an antenna for capturing satellite signals that can 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 and extracts the necessary information from the satellite signals. It calculates the sensor position measurement of the client device 110, e.g., the GNSS coordinates of the client device 110. The positioning module may calculate the position of the client device 110 using methods including, but not limited to, trilateration, multilateration, phase difference of arrival (PDOA), time difference of arrival (TDOA), or any suitable combination thereof.
[0020] The client device may determine its orientation by using the image captured by the camera assembly 125 and the data captured from the sensor module 130 as visual inertial odometry (VIO) data. The client device 110 may transmit the VIO data to the orientation determination module 170 to determine the orientation of the client device 110, for example, the orientation of the client device 110.
[0021] The gaming module 135 provides the player with an interface for participating in a parallel reality game. The game server 120 transmits game data to the client device 110 via the network 105 for use by the gaming module 135 of the client device 110, providing a local version of the game to the player located away from the game server 120. The game server 120 may include a network interface 105 for providing communication over the network. The network interface may include any suitable components for interfacing with one or more networks, such as a transmitter, receiver, port, controller, antenna, or other suitable components.
[0022] The gaming module 135, executed by the client device 110, provides an interface between the player and the parallel reality game. The gaming module 135 may present a user interface on a display device associated with the client device 110, displaying the virtual world associated with the game (e.g., rendering images of the virtual world) and enabling the user to interact with the virtual world and perform various game objectives. In some embodiments, the gaming module 135 presents real-world image data (e.g., captured by the camera assembly 125) augmented with virtual elements from the parallel reality game. In these embodiments, the gaming module 135 may generate and / or adjust virtual content according to other information received from other components of the client device 110. For example, the gaming module 135 may adjust virtual objects displayed on the user interface according to a depth map of the scene captured in the image data. In other embodiments, the gaming module 135 generates virtual objects for display on a translucent display (e.g., an AR headset, AR glasses, etc.) that allows the user to see the real world. Thus, the virtual objects can be superimposed on the user's field of view in the real world.
[0023] The gaming module 135 also controls various other outputs to allow the player to interact with the game without requiring the player to display a display screen. For example, the gaming module 135 may control various audio, vibration, or other notifications that enable the player to play the game without looking at a display screen. The gaming module 135 may access game data received from the game server 120 to provide an accurate representation of the game to the player. The gaming module 135 may receive and process player input and provide updates to the game server 120 via the network 105. The gaming module 135 may also generate and / or adjust game content displayed by the client device 110. For example, the gaming module 135 may generate virtual elements based on depth information. In another example, the gaming module 135 may update virtual elements based on a pose of the camera assembly.
[0024] In one embodiment, the client device 110 may determine a rough position of the client device 110. The client device 110 includes a positioning module 140 that constitutes any device or circuit for monitoring the position of the client device 110. For example, the positioning module 140 may use a satellite navigation positioning system (e.g., Global Navigation Satellite System (GNSS) including GPS, Galileo positioning system, GLONASS, Beidou satellite navigation positioning system, etc.), an inertial navigation system, a dead reckoning system, an IP address-based system, triangulation and / or proximity to mobile phone base stations or Wi-Fi hotspots, and / or other suitable techniques for position determination to determine an actual position or a relative position. As described above, the positioning module 140 receives position data from a position sensor (e.g., a GNSS sensor) and generates a plurality of sensor position measurements of the client device 110. The positioning module 140 may receive position data from various other sensors of the sensor module 130 that are effective for accurately positioning the client device 110. While the positioning module 140 is used to determine a coarse position of the client device 110, re-localization of the client device 110 (e.g., determining the fine position and orientation of the device) is performed by the pose determination module 170 on the game server 120, as described below. The fine-grained position and orientation of the device is performed by the pose determination module 170 on the game server 120, as described below. For example, the rough position (e.g., GNSS coordinates) identified by the positioning module 140 is used to identify a three-dimensional (3D) model of the environment where the client device 110 is located, and the pose determination module 170 uses the image acquired by the camera assembly 125 to localize the position with respect to the acquired model.
[0025] In embodiments 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 with the client device 110 and provides the player's location information to the gaming module 135. The gaming 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. Thus, the player can interact with the virtual world simply by carrying or transporting the client device 110 in the real world. In particular, the player's location in the virtual world may correspond to the player's location in the real world. The gaming module 135 may provide the player's location information to the game server 120 via the network 105. In response, the game server 120 may implement various techniques to verify the location of the client device 110 to prevent cheaters from falsifying the location of the client device 110. Please understand that location information associated with a player will only be used after the player has been notified of its access and how it will be used in the context of the game (e.g., to update the player's location in the virtual world), and has given permission. Furthermore, any location information associated with a player will be stored and maintained in a manner that protects the player's privacy.
[0026] The game server 120 may be any computer 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 processors to perform actions. The game server 120 may include a game database 115 or may communicate with the game database 115. The game database 115 stores game data used in the provided parallel reality game or provided to the client 110 via the network 105.
[0027] The game data stored in game database 115 is (1) Data associated with the virtual world within the parallel reality game (e.g., image data used to render the virtual world on a display device, geographical coordinates of locations within the virtual world, etc.) (2) Data associated with players of parallel reality games (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, and faction information) (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, desired game objectives, etc.), (4) Data associated with virtual elements in the virtual world (e.g., location of virtual elements, type of virtual elements, game objectives associated with virtual elements, real-world location information of the corresponding virtual elements, behavior of virtual elements, relationships of virtual elements, etc.) (5) Data elements associated with real-world objects, landmarks, and locations linked to the virtual world (e.g., location of real-world objects / landmarks, description of real-world objects / landmarks, relationship 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 position, past player position, player movement, player input, player query, player communication, etc.), and (8) Any other data used, related to, or acquired during the implementation of the parallel reality game. The game data stored in the game database 115 may be filled by the system administrator either offline or in real time, and / or by data received from users / players of environment 100, such as from client devices 110 via the network 105.
[0028] The game server 120 may be configured to receive requests for game data from client devices 110 (for example, via remote procedure calls (RPCs)) and to respond to those requests via the network 105. For example, the game server 120 may encode game data in one or more data files and provide the data files to the client devices 110. Furthermore, the game server 120 may be configured to receive game data (for example, player position, player actions, player inputs, etc.) from client devices 110 via the network 105. For example, the client device 110 may be configured to periodically send player inputs and other updates to the game server 120, which then updates the game data in the game database 115 to reflect any and all changed conditions of the game.
[0029] In the embodiments shown, the game server 120 includes a universal gaming module 145, a commercial game module 150, a data acquisition module 155, an event module 160, a posture determination module 170, and a calibration module 180. As described above, the game server 120 may be part of the game server 120 or interact with a game database 115 that can be accessed remotely (for example, the game database 115 may be a distributed database accessed via a network 105). In other embodiments, the game server 120 includes different and / or additional elements. Furthermore, functionality may be distributed among the elements in ways different from those described. For example, the game database 115 may be integrated into the game server 120. Furthermore, although the posture determination module 170 and the calibration module 180 are described as being located on the game server 120, in other embodiments, as described above, posture determination and / or magnetic sensor calibration are performed on the client device 110.
[0030] The Universal Game Module 145 hosts a parallel reality game for all players and serves as the authoritative source of the current status of the parallel reality game for all players. As a host, the Universal Game Module 145 generates game content to present to players, for example, via each client device 110. When hosting the parallel reality game, the Universal Game Module 145 may access the game database 115 to retrieve and / or store game data. The Universal Game Module 145 receives game data (e.g., depth information, player input, player position, player actions, landmark information, etc.) from the client devices 110 and incorporates the received game data into all players throughout the parallel reality game. The Universal Game Module 145 may also manage the distribution of game data to the client devices 110 via the network 105. The universal game module 145 may also manage the security aspects of the client devices 110, including, but not limited to, ensuring connections between the client devices 110 and the game server 120, establishing connections between various client devices 110, and verifying the locations of various client devices 110.
[0031] In embodiments where one commercial game module 150 is included, it may be separate from or part of the universal game module 145. The commercial game module 150 may manage the inclusion of various game features within a parallel reality game linked to commercial activities in the real world. For example, the commercial game module 150 may receive requests from external systems, such as sponsors / advertisers, corporations, or other entities, via the network 105 (via the network interface), for game features linked to commercial activities in the parallel reality game. The commercial game module 150 may then arrange to include these game features in the parallel reality game.
[0032] The game server 120 further includes a data collection module 155. In embodiments where one is included, the data collection module 155 may be separate from or part of the universal game module 145. The data collection module 155 may manage to incorporate various game features within a parallel reality game that are linked to data collection activities in the real world. For example, the data collection module 155 may modify game data stored in the game database 115 to include game features linked to data collection activities within the parallel reality game. The data collection module 155 may also analyze data collected by players in accordance with data collection activities and provide data for access by various platforms.
[0033] Event Module 160 manages player access to events in a parallel reality game. While the term “event” is used for convenience, it should be understood that this term does not necessarily refer to a specific event at a specific place or time. Rather, it may refer to any provision of access-controlled game content where one or more access criteria are used to determine whether a player is permitted to access that content. Such content may be part of a larger parallel reality game containing game content with little or no access control, or it may be a standalone access-controlled parallel reality game.
[0034] The pose determination module 170 receives VIO data from the client device 110 and estimates the pose of the client device 110 relative to a reference frame. The data may include images captured by the camera assembly 125 and sensor data from the sensor module 130. In some embodiments, the pose determination module 170 uses a computer vision algorithm to estimate the pose of one or more cameras of the camera assembly 125. The pose determination module 170 applies the VIO algorithm to the VIO data to detect visual features across multiple image frames and determine the camera's movement and its relative position and orientation to the reference frame. The pose determination module 170 may also process the sensor data to estimate the orientation, acceleration, and rotation of the client device. Thereafter, the VIO determination module 170 uses these results to determine the estimated pose of the client device relative to the reference frame. The pose determination module 170 may use a filter-based algorithm, an optimization-based algorithm, or a deep learning-based algorithm 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 with ORB features (ORB-SLAM), a visual inertial navigation system using a monocular camera (VINS-MONO), and a multi-state constrained Kalman filter (MSCKF).
[0035] The pose determination module 170 determines the pose of the client device 110 from one or more images captured by the client device, relative to one or more existing images of the physical environment around the client device 110. In one embodiment, the pose determination module 170 uses GPS coordinates (e.g., received from the positioning module 140 on the client device 110) to obtain a 3D model of the environment in which the client device 110 is located. The 3D model may be a point cloud or mesh topology generated from previously captured images of the environment. The pose determination module 170 then generates a pose estimate of the client device 110 by comparing one or more images captured by the camera assembly 125 with the obtained 3D model. 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.
[0036] The accuracy evaluation module 180 determines the accuracy of the sensor position measurements of the client device 110 and generates an accuracy label indicating whether each measurement is accurate. For example, the accuracy evaluation module 180 may receive multiple sensor position measurements from the client device 110 and compare each sensor position measurement with a set of multiple 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 measurement of latitude, longitude, or altitude indicating the location of the client device, and a timestamp indicating the date and time the VIO position measurement was generated. The accuracy evaluation process using VIO position measurements is further illustrated in Figure 4.
[0037] The accuracy evaluation module 180 may determine whether the sensor position measurements are accurate by comparing them with geospatial data from one or more geospatial databases. A geospatial database is a database containing geospatial data that can be used to describe locations on the Earth's surface and to create maps. For example, a geospatial database may contain geospatial data describing the geographical, geological, or meteorological features of locations on the Earth's surface, such as topography, elevation, 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 sector organization or a public sector agency. The accuracy evaluation module 180 may access the geospatial data from one or more geospatial databases through various means. For example, the accuracy evaluation module may access the data through an application programming interface (API), or through direct access to the database, or it may be exported to a locally managed database.
[0038] If the sensor position measurement includes measurements indicating the location of the client device on the Earth's surface (e.g., longitude and latitude), the accuracy evaluation module 180 compares other measurements in the sensor position measurement with values corresponding to those locations in a geospatial database to determine whether the overall sensor position measurement is accurate. For example, as described above, the sensor position measurement may include the longitude, latitude, and altitude of the client device. The accuracy evaluation module 180 may compare the altitude in the sensor position measurement at that longitude and latitude with altitudes listed in a geospatial database. If the difference between altitudes exceeds a certain threshold, the accuracy evaluation module 180 determines that the sensor position measurement is inaccurate. The accuracy evaluation module 180 may use altitude data stored in a geospatial database (e.g., a digital elevation map (DEM) generated from a LiDAR survey) or map data obtained from an open-source online platform such as OpenStreetMap (OSM).
[0039] Network 105 can be any type of communication network, such as a local area network (e.g., an intranet), a wide area network (e.g., the Internet), or some combination thereof. The network may also include a direct connection between the client device 110 and the game server 120. Generally, communication between the game server 120 and the client device 110 can take place via a network interface using any kind of wired and / or wireless connection, using various communication protocols (e.g., TCP / IP, HTTP, SMTP, FTP), encodings or formats (e.g., HTML, XML, JSON), and / or protection schemes (e.g., VPN, Secure HTTP, SSL).
[0040] The technologies discussed herein are based on servers, databases, software applications, and other computer-based systems, as well as actions performed and information transmitted 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 between components. For example, the server processes discussed herein may be implemented using a single server or multiple servers operating in combination. Databases and applications may be implemented on a single system or distributed across multiple systems. Distributed components may operate sequentially or in parallel.
[0041] In addition, in situations where the systems and methods discussed herein access and analyze personal information relating to a user, or use personal information such as location information, the user may be given the opportunity to control whether a program or function collects information, and 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 is provided with meaningful notice about what information is collected and how that information is used. No information will be collected or used unless the user consents, and the user may withdraw or change their consent at any time. Thus, the user can control how information about them is collected and used by the application or system. Furthermore, certain information or data may be processed in one or more ways before being stored or used so that personally identifiable information is removed. For example, a user's identity may be processed so that personally identifiable information cannot be determined for the user.
[0042] According to aspects of this disclosure, a player may interact with a parallel reality game by carrying a client device 110 in the real world. For example, a player may simply access an application associated with a parallel reality game on a smartphone and play the game by moving through the real world with the smartphone. In this respect, the player does not need to continuously view a visual representation of the virtual world on a display screen to play a location-based game. As a result, the user interface may include several non-visual elements that enable the user to interact with the game. For example, the game interface may provide the player with audio notifications when the player approaches a virtual element or object in the game, or when an important event occurs in the parallel reality game. The player may control these audible notifications using audio controls. Different types of audible notifications may be provided to the user depending on the type of virtual element or event. The audible notifications may increase or decrease in frequency or volume depending on the player's proximity to the virtual element or object. Other non-visual notifications and signals, such as vibration notifications or other appropriate notifications or signals, may be provided to the user.
[0043] A person skilled in the art will understand, in light of this disclosure, that numerous game interface configurations and underlying functionalities are evident from the disclosure provided herein. This disclosure is not intended to be limited to any one specific configuration.
[0044] Figure 2 is a conceptual diagram illustrating the process of determining the precise geographic orientation of a client device relative to a reference frame, according to several embodiments. As the client device moves along a path within a geographical 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. Sensor position measurements may be generated by a positioning module 140. As described in Figure 1, the positioning module 140 may be configured to determine the actual or relative position of the client device by using a navigation positioning system. VIO data may include images collected from a camera assembly and data collected from the sensor module 140 (e.g., IMU, accelerometer, gyroscope). The VIO data may be provided to an attitude determination module 170 to determine multiple VIO position measurements of the client device relative to a reference frame. In the example illustrated by Figure 2, 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) are collected as the client device moves in a northeast direction.
[0045] The system can collaboratively optimize a sequence of sensor position measurements 230 to determine the geographic orientation of the client device relative to a reference frame. In contrast to using a magnetometer, determining the orientation of the client device is not impaired by calibration and interference from magnetized buildings and other structures. For example, referring to Figure 2, the local coordinate system of the client device is not aligned with the global coordinate system. Therefore, multiple sensor position measurements 230 and VIO position measurements 220 are not aligned, and each of the sensor position measurement 230A and the corresponding VIO position measurement 220A has a large difference 240a. To determine the precise orientation of the client device, the system can determine a transformation between the local coordinate system and the global coordinate system (e.g., geographic coordinate system) used by the client device, based on 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 with the global coordinate system (shown in 250) and transform points and vectors between the two coordinate systems. To improve the accuracy of the transformation, the system can exclude inaccurate sensor position measurements and consider only accurate ones. The accuracy evaluation module 180 may be configured to determine the accuracy of the sensor position measurement and classify the position measurement according to its accuracy.
[0046] Sensor position measurements and corresponding VIO position measurements may be measured at predetermined time intervals. Therefore, each sensor position measurement and corresponding VIO position measurement may be associated with a specific time. In some embodiments, the VIO position measurement 230 may be determined using VIO data captured on the client device 110.
[0047] (An exemplary process for identifying inaccurate sensor position measurements) Figure 3 is a conceptual diagram showing the data flow to an accuracy evaluation module for generating a set of labeled sensor position measurements in several embodiments. As described above, the accuracy evaluation module 350 is configured to determine the accuracy of the sensor position measurements based on the corresponding VIO position measurements.
[0048] The accuracy evaluation 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 measurement also includes an altitude measurement. The accuracy evaluation module 350 receives a set of VIO position measurements 312 from the attitude determination module 170 corresponding to a duration of time. As illustrated in Figure 1, the attitude determination module 170 of the game server may use VIO data collected from the camera assembly and the sensor module of the client device 110 to estimate the attitude of the client device 110. The VIO position measurements may further include the orientation of the client as well as the position of the client device.
[0049] The accuracy evaluation module 350 can also use geospatial data to determine the accuracy of the sensor position measurement 310. In the embodiment shown in Figure 3, the accuracy evaluation module 350 receives altitude data 322 and map data 324 from the geospatial database 320. As shown in Figure 1, the geospatial database 320 may include geospatial data associated with geospatial data, including physical features of the Earth's surface, roads, buildings, bodies of water, etc. For example, altitude data 322 may be obtained from a digital elevation map (DEM) generated from a LiDAR survey. In another example, map data may be obtained from an open-source online platform such as OpenStreetMap (OSM).
[0050] The accuracy evaluation module 350 can generate a set of labeled sensor position measurements 360, which may include sensor position measurements labeled as accurate or inaccurate. The labeling process is further described below in Figure 4.
[0051] Figure 4 is a flowchart showing a process for generating a set of classified sensor position measurements for use in a world coordinate system attitude optimization algorithm, according to several embodiments. In some embodiments, the process 400 may be performed by a computer device (e.g., a game server 120) or by a set of distributed computer devices working together to execute a set of instructions (e.g., a virtual machine, a distributed computer system, a cloud computer, etc.). The computer device performing the process in Figure 4 may include two or more computer devices associated with the game server 120 or a client device 110.
[0052] The accuracy evaluation module receives multiple sensor position measurements of the client device, measured by the client device's position sensor. Each sensor position measurement may include a measurement of latitude, longitude, or altitude, and a corresponding timestamp when the measurement was captured.
[0053] The accuracy evaluation module 410 receives multiple VIO position measurements from the client device. The attitude determination module 170 can receive multiple VIO position measurements from the client device.
[0054] The accuracy evaluation module calculates a set of sensor position transformations based on the received sensor position measurements. A sensor position transformation represents the difference between consecutive pairs of sensor position measurements. For example, a sensor position transformation is a vector representing the change in the position of the client device from one sensor position measurement to the next. In embodiments where the sensor position measurements also include orientation data, the sensor position transformation may similarly reflect the change in orientation of the client device.
[0055] The accuracy evaluation module calculates sensor position transformations based on consecutive pairs of sensor position measurements. A sequential pair of sensor position measurements is a set of sensor position measurements captured consecutively over time. For example, if a client device captures sensor position transformations periodically (i.e., based on regular intervals), the client device may identify consecutively captured sensor position measurements as consecutive pairs of sensor position measurements. Alternatively, a consecutive pair of sensor position measurements may be sensor position measurements that correspond to a time close to when the corresponding VIO measurement was taken. For example, a consecutive pair of sensor position measurements may be selected based on their timestamps such that the timestamp of the selected sensor position measurement is closest to the timestamp of the corresponding pair of VIO position measurements.
[0056] The accuracy evaluation module calculates a set of VIO position transformations based on VIO position measurements. Similar to sensor position transformations, VIO position transformations represent the difference between consecutive pairs of VIO position measurements. VIO position transformations may also be vectors representing the change in the client device's position from one VIO position measurement to the next, or they may reflect changes in the device's orientation. Consecutive pairs of VIO position measurements may be selected in a similar manner to how consecutive pairs of sensor position measurements are selected. For example, consecutive pairs may be selected as consecutive measurements captured by the client device, or they may be selected so that their timestamps match the timestamps of the corresponding sensor position measurements.
[0057] The accuracy evaluation module identifies which sensor position transformation corresponds to each VIO position transformation and generates measurement differences based on the corresponding pairs of position transformations. The accuracy evaluation module 350 may identify corresponding pairs of position transformations based on the timestamps of the corresponding sensor position measurements and VIO position measurements. For example, for each sensor position transformation, the accuracy evaluation module may identify the VIO position transformation with the timestamp closest to (or vice versa) the timestamp of the sensor position transformation. Alternatively, for each sensor position transformation, the accuracy evaluation module 350 may identify the VIO position transformation that covers the period that most overlaps with (or vice versa) the period of the sensor position transformation.
[0058] The accuracy evaluation module generates measurement differences based on corresponding pairs of position transformations. These measurement differences are the differences between position transformations and therefore represent the differences in the paths taken by the client device according to the sensor position measurements relative to the VIO position measurements. These differences can be vectors, which are the differences between the vectors representing the sensor position transformations and the VIO position transformations.
[0059] The accuracy evaluation module compares the difference between measured values to a threshold difference and labels each sensor position measurement as accurate or inaccurate based on whether the corresponding difference exceeds the threshold difference. Thus, sensor position measurements with a measurement difference exceeding the threshold may be labeled as inaccurate, while other sensor position measurements may be labeled as accurate. Therefore, the accuracy evaluation module identifies measurement differences exceeding the threshold 435 and labels the sensor position measurements corresponding to the identified measurement differences as inaccurate 440. In some embodiments, instead of labeling all sensor position measurements with an accuracy label, the accuracy evaluation module filters out inaccurate sensor position measurements and generates a filtered set of sensor position measurements that include only accurate sensor position measurements.
[0060] The game server may use accuracy labels for sensor positioning to determine when the position sensor is temporarily disabled. For example, if a threshold number of sensor positioning measurements are labeled as inaccurate within a certain period, the game server may determine that the client device is located in an area where the position sensor cannot accurately measure the client device's position (for example, because the client device is near a large building that makes it difficult for the position sensor to connect with satellites). The game server may ignore sensor positioning measurements when determining the client device's position for the period after the position sensor has been determined to be inaccurate based on the accuracy label. Similarly, the game server may notify the user of the client device that the position sensor is unable to produce accurate measurements or that it may disable the functionality of services provided by the game server until the sensor positioning measurements are determined to be sufficiently accurate again.
[0061] In some embodiments, other types of reference measurements, such as altitude data, may be used alone or in combination with VIO position measurements to determine the accuracy of sensor position measurements. For example, for a set of sensor position measurements having latitude, longitude, and altitude measurements, the accuracy evaluation module 350 may access a geospatial database to obtain altitude measurements corresponding to the latitude and longitude measurements of each sensor position measurement in the set of sensor position measurements. In some embodiments, the accuracy evaluation module may generate a set of measurement differences by calculating the difference between each altitude measurement of the sensor position measurements and the corresponding known altitude measurement obtained from the geospatial database. The accuracy evaluation module may identify measurement differences of a set of measurement differences that exceed a predetermined threshold and may label the sensor position measurements corresponding to the measurement differences as inaccurate.
[0062] In some embodiments, the accuracy evaluation module calculates an accuracy score for each sensor position measurement. The accuracy score is a score that reflects the likelihood that the sensor position measurement is accurate. In one embodiment, the accuracy score may include an error estimate. The accuracy score may be used to determine the weight of the 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 will be assigned a higher weight and will have a greater impact on the resulting transformation.
[0063] (An exemplary process for identifying inaccurate satellite signals) Figure 5 is a flowchart illustrating a process for identifying inaccurate satellite signals from multiple satellite signals, according to several embodiments. In some embodiments, the client device is further configured to implement a combinatorial search method for identifying inaccurate satellite signals from multiple received satellite signals from satellites orbiting the Earth, in addition to generating a set of classified sensor position measurements. In some embodiments, the process 500 may be performed by a computer device (e.g., a game server 120) or by a set of distributed computer devices working together to execute a set of instructions (e.g., a virtual machine, a distributed computer system, a cloud computer, etc.). The computer device performing the process in Figure 5 may include two or more computer devices associated with the game server 120 or the client device 110.
[0064] The client device receives a set of satellite signals from each of several satellites 505. These satellite signals are transmitted by the multiple satellites and captured by the client device's position sensors. For example, the satellite signals may be signals from GNSS satellites. The satellite signals contain information that enables the client device to generate sensor position measurements indicating its own position. For example, the satellite signals may include navigation messages containing data such as satellite clock data, ephemeris data, and satellite yearbook data. In some embodiments, the client device 110 receives the transmitted signals, decodes the transmitted signals, and extracts the data necessary to calculate the position of the client device 110. The client device 110 may determine its position at a particular timestamp by using a combination of signals from at least four satellites corresponding to a timestamp.
[0065] The client device generates multiple subsets of the set of satellite signals. Each of these subsets excludes at least one of 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 may 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 may generate all possible subsets of the set of signals, or it may apply some heuristics to limit the number of subsets it generates.
[0066] The client device calculates a sensor position measurement based on each of several subsets of the set of satellite signals.515 As shown in Figure 1, the client device may use a set of satellite signals, such as triangulation or polygonal surveying, to calculate the client device's sensor position measurement. Each sensor position measurement may include latitude, longitude, or altitude measurements corresponding to time measurements.
[0067] The client device calculates an accuracy score for each sensor position measurement generated based on a corresponding subset of satellite signals. The accuracy score is a score that reflects the likelihood that the sensor position measurement is accurate. In some embodiments, the accuracy score is an accuracy label, which is calculated as described with respect to Figure 4. Alternatively, the client device may estimate the accuracy score of the sensor position measurement directly based on the satellite signals. For example, the client device may compare a subset of satellite signals with historical data describing satellite signals captured by other client devices. This historical data may be labeled as whether the captured satellite signals contain inaccurate satellite signals. The client device may compare the satellite signals within each subset of satellite signals with the historical data to calculate an accuracy score for each subset. In some embodiments, the client device uses a machine learning model trained to predict the accuracy score of a subset of satellite signals based on labeled historical data.
[0068] In one embodiment, the client device uses a machine learning model or geometric algorithm to model expected sensor positioning behavior based on historical data, such as determining the spatial distribution of erroneous sensor positioning measurements. For example, it may be observed that the client device's sensor positioning at a particular location is often inaccurate due to reflections from surrounding buildings (e.g., in the middle of a road). As a result, a subset of satellite signals that result in inaccurate sensor positioning due to inaccurate satellite measurements can be identified.
[0069] In another example, a client device may use ephemeris data to identify a correlation between the error rate of sensor position measurements and the satellite's position. For instance, at a particular location, satellite signals from satellites positioned east of the client device may be observed to be less reliable compared to satellites positioned in other directions relative to the client device. Therefore, the client device may exclude satellite signals received from satellites positioned east of the client device when determining its own position.
[0070] The client device identifies a satellite signal in a set of satellite signals as inaccurate based on the accuracy score of sensor position measurements corresponding to a subset of satellite signals that includes the identified satellite signal.525 The client device may identify an inaccurate satellite signal by identifying which of the subset of satellite signals are accurate and which of the satellite signals were excluded from the identified subset. For example, the client device may identify the sensor position measurements associated with subset {A, C, D, E} as accurate and the remaining subset as inaccurate. The client device may identify satellite signal B as common to the inaccurate subset and thereby determine that signal B is an inaccurate satellite signal. The client device may use the portion of satellite signals excluding the inaccurate satellite signal to determine the location of the client device.
[0071] If a client device identifies a satellite signal as inaccurate, the client device may also take corrective action with respect to the identified satellite signal.530 For example, the client device may ignore future satellite signals from a satellite that generated satellite signals for a particular period. That is, for a period after determining that the satellite signals are inaccurate, the client device may filter signals from the satellite from those signals used to determine the location of the client device. Similarly, the client device may ignore future satellite signals from that satellite until what was causing the inaccuracy of the signals from that satellite is no longer a problem. In some embodiments, the client device localizes itself using other sources of information about its location. For example, the client device may begin using VIO data or IMU sensor data to determine its location.
[0072] (An exemplary computer system) Figure 6 shows exemplary architectures of computer devices according to several embodiments. Figure 6 shows a high-level block diagram illustrating the physical components of a computer used as some or all of the entities described herein, although according to one embodiment, the computer may have additions, subtractions, or variations of the components provided in Figure 6. Figure 6 shows computer 500, which is intended to illustrate various functions that may be present in a computer system rather than being a structural schematic diagram of the embodiments described herein. In practice, as will be recognized by those skilled in the art, the individually shown items may be combined or some items may be separated.
[0073] Figure 6 shows at least one processor 602 coupled to a chipset 604. The chipset 604 is also coupled to memory 606, storage device 608, keyboard 610, graphics adapter 612, pointing device 614, and network adapter 616. A display 518 is coupled to the graphics adapter 612. In one embodiment, the functionality of the chipset 604 is provided by a memory controller hub 520 and an I / O hub 622. In another embodiment, memory 606 is directly coupled to the processor 602 instead of the chipset 604. In some embodiments, the computer 600 includes one or more communication buses for interconnecting these components. The one or more communication buses optionally include circuits (also called chipsets) that interconnect and control communication between system components.
[0074] The storage device 608 is a computer-readable non-temporary storage medium, such as a hard drive, CD-ROM (Compact Disc Read-Only Memory), DVD, solid-state memory device, other optical storage device, magnetic cassette, magnetic tape, magnetic disk storage device, other magnetic storage device, optical disk 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. The pointing device 614 may be a mouse, trackball, or other type of pointing device, used in conjunction with the keyboard 610 to input data into the computer system 600. The graphics adapter 612 displays images and other information on the display 618. The network adapter 616 connects the computer 600 to a local or wide area network.
[0075] Memory 606 holds instructions and data used by processor 602. Memory 606 can be non-persistent memory, examples of which include high-speed random-access memory such as DRAM, SRAM, DDRRAM, ROM, EEPROM, and flash memory.
[0076] As is known in the art, the computer 600 may have components different from those shown in Figure 6 and / or other components. In addition, the computer 600 may lack certain exemplary components. In one embodiment, the computer 600, which functions as a server, may lack a keyboard 610, a pointing device 614, a graphics adapter 612, and / or a display 618. Furthermore, the storage device 608 may be local and / or remote from the computer 600 (e.g., implemented within a storage network (SAN)).
[0077] As is known in the art, the computer 600 is adapted to run a computer program module for providing the functions described herein. As used herein, the term “module” refers to the computer program logic used to provide the specified functions. Thus, a module may be implemented in hardware, firmware, and / or software. In one embodiment, the program module is stored in a storage device 608, loaded into memory 606, and executed by a processor 602.
[0078] (Additional configuration information) The foregoing description of embodiments is presented for illustrative purposes only and is not intended to be exhaustive or to limit patent rights to the exact forms disclosed. Those skilled in the art will understand, by considering the foregoing disclosure, that many modifications and variations are possible.
[0079] Parts of this description describe embodiments using algorithms and symbolic representations of operations on information. These descriptions and representations of algorithms are commonly used by those skilled in the art in data processing techniques to effectively communicate their work to those skilled in other arts. These operations are described functionally, computationally, or logically, but are understood to be implemented by computer programs, or equivalent electrical circuits, microcode, etc. Furthermore, without loss of generality, it has proven sometimes convenient to refer to arrangements of these operations as modules. The operations described and the modules associated with them may be embodied in software, firmware, hardware, or any combination thereof.
[0080] Any step, operation, or process described herein may be performed or implemented using one or more hardware or software modules, either alone or in combination with other devices. In one embodiment, the software module is implemented by a computer program product including a computer-readable medium containing computer program code, which is executed by a computer processor and can perform some or all of the aforementioned steps, operations, or processes.
[0081] Embodiments may also relate to apparatus for performing the calculations described herein. Such apparatus may comprise a general-purpose computer device that is specifically constructed for a required purpose and / or selectively invoked or reconfigured by a computer program stored in the computer. Such computer programs may be stored in a non-temporary, tangible, computer-readable storage medium that can be coupled to a computer system bus, or in any type of medium suitable for storing electronic instructions. Furthermore, any computer system referenced herein may comprise a single processor or may have an architecture employing multiple processor designs to enhance computing power.
[0082] Embodiments may also relate to products generated by computer processes described herein. Such products may consist of information arising from computer processes, which is stored in non-temporary, tangible, computer-readable storage media and may include any embodiment of combinations with computer program products or other data described herein.
[0083] Finally, the language used in this specification has been selected primarily for readability and educational purposes, and may not be selected to describe or limit the patent rights. Therefore, the scope of the patent rights is intended to be limited not by the detailed description of this invention, but by any claims issued in an application based on this specification. Accordingly, the disclosure of embodiments is intended to illustrate, not to limit, the scope of the patent rights set forth in the following claims.
Claims
1. Receiving a plurality of sensor position measurements of the client device measured by the client device's position sensor, wherein each sensor position measurement includes the geographical location of the client device as measured by the position sensor. The process involves receiving 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. This involves calculating a set of sensor position transformations, wherein each sensor position transformation is the difference between pairs of the plurality of sensor position measurements. The calculation of a set of VIO position transformations, wherein each VIO position transformation is the difference between consecutive pairs of the plurality of VIO position measurements, The difference between each sensor position transformation in the set of sensor position transformations and the VIO position transformation corresponding to the set of VIO position transformations is calculated. The system determines that the difference between the sensor position conversion and the VIO position conversion exceeds a threshold, A method comprising labeling the sensor position measurement corresponding to the difference as inaccurate in response to the determination.
2. The method according to 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 according to claim 1, wherein the VIO data includes visual data and sensor data captured by the client device.
4. Each of the aforementioned plurality of sensor position measurements includes an altitude component, The aforementioned method, For each of the aforementioned sensor position measurements, The altitude value is received from a third-party database, wherein the altitude value corresponds to the geographical location of the sensor position measurement. The difference between the received altitude value and the altitude component of the sensor position measurement is calculated, The method according to claim 1, further comprising labeling the sensor position measurement as inaccurate in response to the difference exceeding the threshold.
5. The method according to 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 disabling the functionality of a client application running on the client device in response to labeling the sensor position measurement as inaccurate.
7. The method according to claim 1, further comprising notifying the user of the client device that the sensor position measurement measured by the position sensor is inaccurate, in response to labeling the sensor position measurement as inaccurate.
8. Calculating the difference between the sensor position conversion and the corresponding VIO position conversion is: The method according to claim 1, comprising identifying a corresponding VIO position transformation for each sensor position transformation in the set of sensor position transformations based on the timestamps of the corresponding sensor position measurement and the corresponding VIO position measurement.
9. A non-temporary computer-readable storage medium containing a storage instruction executable by a processor, wherein the storage instruction is Receiving a plurality of sensor position measurements of the client device measured by the client device's position sensor, wherein each sensor position measurement includes the geographical location of the client device as measured by the position sensor. The process involves receiving 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. The calculation of a set of sensor position transformations, wherein each sensor position transformation is the difference between consecutive pairs of sensor position measurements of the plurality of sensor position measurements, The calculation of a set of VIO position transformations, wherein each VIO position transformation is the difference between consecutive pairs of the plurality of VIO position measurements, The difference between each sensor position transformation in the set of sensor position transformations and the corresponding VIO position transformation in the set of VIO position transformations is calculated. The system determines that the difference between the sensor position conversion and the VIO position conversion exceeds a threshold, A non-temporary, computer-readable storage medium capable of performing operations including, in response to the determination, labeling the sensor position measurement corresponding to the difference as inaccurate.
10. The non-temporary computer-readable storage medium according to claim 9, wherein the plurality of sensor position measurements include measurements captured by the GNSS sensor of the client device.
11. The non-temporary computer-readable storage medium according to claim 9, wherein the VIO data includes visual data and sensor data captured by the client device.
12. Each of the aforementioned plurality of sensor position measurements includes an altitude component, and the operation is, For each of the aforementioned sensor position measurements, The altitude value is received from a third-party database, wherein the altitude value corresponds to the geographical location of the sensor position measurement. The difference between the received altitude value and the altitude component of the sensor position measurement is calculated, A non-temporary computer-readable storage medium according to claim 9, further comprising labeling the sensor position measurement as inaccurate in response to the difference exceeding the threshold.
13. The non-temporary computer-readable storage medium according to claim 9, wherein each of the plurality of sensor position transformations includes a vector between the corresponding pairs of sensor position measurements.
14. The aforementioned operation is, The non-temporary computer-readable storage medium according to claim 9, further comprising disabling the functionality of a client application running on the client device in response to labeling the sensor position measurement as inaccurate.
15. The aforementioned operation is, A non-temporary computer-readable storage medium according to claim 9, further comprising notifying the user of the client device that the sensor position measurement measured by the position sensor is inaccurate, in response to labeling the sensor position measurement as inaccurate.
16. Calculating the difference between the sensor position conversion and the corresponding VIO position conversion is: A non-temporary computer-readable storage medium according to claim 9, comprising identifying a corresponding VIO position transformation for each sensor position transformation in the set of sensor position transformations based on the timestamps of the corresponding sensor position measurement and the corresponding VIO position measurement.
17. At least one processor, A non-temporary computer-readable storage medium containing a storage instruction executable by a processor, wherein the storage instruction is Receiving a plurality of sensor position measurements of the client device measured by the client device's position sensor, wherein each sensor position measurement includes the geographical location of the client device as measured by the position sensor. The process involves receiving 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. This involves calculating a set of sensor position transformations, where each sensor position transformation is the difference between consecutive pairs of the plurality of sensor position measurements. The calculation of a set of VIO position transformations, wherein each VIO position transformation is the difference between consecutive pairs of the plurality of VIO position measurements, The difference between each sensor position transformation in the set of sensor position transformations and the corresponding VIO position transformation in the set of VIO position transformations is calculated. The system determines that the difference between the sensor position conversion and the VIO position conversion exceeds a threshold, A computer system comprising a non-temporary computer-readable storage medium capable of performing an operation including, in response to the determination, labeling the sensor position measurement corresponding to the difference as inaccurate.
18. The computer system according to 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 according to claim 17, wherein the VIO data includes visual data and sensor data captured by the client device.
20. Each of the aforementioned plurality of sensor position measurements includes an altitude component, and the operation is, For each of the aforementioned sensor position measurements, The altitude value is received from a third-party database, wherein the altitude value corresponds to the geographical location of the sensor position measurement. The difference between the received altitude value and the altitude component of the sensor position measurement is calculated, The computer system according to claim 17, comprising labeling the sensor position measurement as inaccurate in response to the difference exceeding the threshold.
21. Receiving a set of satellite signals, including satellite signals, from each of multiple satellites, wherein each satellite signal is captured by the position sensor of a client device. The method of generating multiple subsets of the set of satellite signals, wherein each subset excludes at least one satellite signal from the set of satellite signals. Calculating sensor position measurements based on each of the plurality of subsets of the set of satellite signals, Based on the corresponding subset of satellite signals, the accuracy score of each of the sensor position measurements is calculated, Identifying a satellite signal in a set of satellite signals as inaccurate based on the accuracy score of the sensor position measurement corresponding to a subset of satellite signals including the identified satellite signal, A method comprising: taking corrective action with respect to the identified satellite signal in response to identifying the satellite signal as inaccurate.
22. The method according to claim 21, wherein calculating the accuracy score of the sensor position measurement includes calculating the accuracy score of the sensor position measurement based on the corresponding VIO position measurement.
23. Calculating the accuracy score of the sensor position measurement is: The method according to claim 21, comprising applying a machine learning model to the subset of satellite signals corresponding to sensor position measurements, wherein the machine learning model is trained on historical data to generate accuracy scores for the set of satellite signals based on the satellite signals.
24. Implementing the aforementioned corrective measures means The method according to claim 21, comprising ignoring signals from the satellite associated with the identified satellite signal for a predetermined period of time in order to position the client device.
25. The method according to claim 21, further comprising determining the location of the client device based on a subset of the satellite signals excluding the identified satellite signals.
26. Implementing the aforementioned corrective measures means The method of claim 25, comprising ignoring signals from the satellite associated with the identified satellite signal until the client device is at a threshold distance away from the determined position of the client device, in order to position the client device.
27. The method according to claim 21, wherein performing the corrective action includes capturing VIO data by the client device in order to position the client device.
28. Identifying the satellite signal based on the accuracy score means that Identify a sensor position measurement having an accuracy score indicating that the aforementioned sensor position measurement is accurate. The method according to claim 21, which identifies the satellite signals excluded from the subset of satellite signals corresponding to the identified sensor position measurement values.
29. A non-temporary computer-readable storage medium containing a storage instruction executable by a processor, wherein the storage instruction is Receiving a set of satellite signals, including satellite signals, from each of multiple satellites, wherein each satellite signal is captured by the position sensor of a client device. The method of generating multiple subsets of the set of satellite signals, wherein each subset excludes at least one satellite signal from the set of satellite signals. Calculating sensor position measurements based on each of the plurality of subsets of the set of satellite signals, Based on the corresponding subset of satellite signals, the accuracy score of each of the sensor position measurements is calculated, Identifying that a satellite signal in a set of satellite signals is inaccurate based on the accuracy score of the sensor position measurement corresponding to a subset of satellite signals, including the identified satellite signal; A non-temporary computer-readable storage medium capable of performing operations including, in response to identifying the satellite signal as inaccurate, taking corrective action with respect to the identified satellite signal.
30. The non-temporary computer-readable storage medium according to claim 29, wherein calculating the accuracy score of the sensor position measurement includes calculating the accuracy score of the sensor position measurement based on the corresponding VIO position measurement.
31. Calculating the accuracy score of the sensor position measurement is: A non-temporary computer-readable storage medium according to claim 29, comprising applying a machine learning model to the subset of satellite signals corresponding to sensor position measurements, wherein the machine learning model is trained on historical data to generate accuracy scores for the set of satellite signals based on the satellite signals.
32. Implementing the aforementioned corrective measures means A non-temporary computer-readable storage medium according to claim 29, comprising ignoring signals from the satellite associated with the identified satellite signal for a predetermined period of time in order to position the client device.
33. A non-temporary computer-readable storage medium according to claim 29, comprising determining the location of the client device based on a subset of the satellite signals excluding the identified satellite signals.
34. Implementing the aforementioned corrective measures means A non-temporary computer-readable storage medium according to claim 33, comprising ignoring signals from the satellite associated with the identified satellite signal until the client device is at a threshold distance away from the determined position of the client device, in order to position the client device.
35. Implementing the aforementioned corrective measures means A non-temporary computer-readable storage medium according to claim 29, comprising capturing VIO data by the client device in order to position the client device.
36. Identifying the satellite signal based on the accuracy score means that Identifying a sensor position measurement having an accuracy score indicating that the sensor position measurement is accurate, A non-temporary computer-readable storage medium according to claim 29, comprising identifying satellite signals excluded from the subset of satellite signals corresponding to the identified sensor position measurement values.
37. At least one processor, A non-temporary computer-readable storage medium containing a storage instruction executable by a processor, wherein the storage instruction is Receiving a set of satellite signals, including satellite signals, from each of multiple satellites, wherein each satellite signal is captured by the position sensor of a client device. The method of generating multiple subsets of the set of satellite signals, wherein each subset excludes at least one satellite signal from the set of satellite signals. Calculating sensor position measurements based on each of the plurality of subsets of the set of satellite signals, Based on the corresponding subset of satellite signals, the accuracy score of each of the sensor position measurements is calculated, Identifying that a satellite signal in a set of satellite signals is inaccurate based on the accuracy score of the sensor position measurement corresponding to a subset of satellite signals, including the identified satellite signal; A computer system comprising a non-temporary computer-readable storage medium executable for performing operations including, in response to identifying the satellite signal as inaccurate, taking corrective action with respect to the identified satellite signal.
38. The computer system according to claim 37, wherein calculating the accuracy score of the sensor position measurement includes calculating the accuracy score of the sensor position measurement based on the corresponding VIO position measurement.
39. Calculating the accuracy score of the sensor position measurement is: The computer system according to claim 37, comprising applying a machine learning model to the subset of satellite signals corresponding to sensor position measurements, wherein the machine learning model is trained on historical data to generate accuracy scores for the set of satellite signals based on the satellite signals.
40. Implementing the aforementioned corrective measures means The computer system according to claim 37, comprising ignoring signals from the satellite associated with the identified satellite signal for a predetermined period of time in order to position the client device.