Road registration differential GPS

A system and method of calibrating satellite signals broadcast by one or more satellites of a satellite positioning system. The system receives sensor data from one or more sensors provided on a vehicle. The system further detects satellite signals from the one or more satellites, and determines timing offsets associated with the satellite signals from each of the one or more satellites based at least in part on the sensor data. For example, the one or more sensors may include at least one of a camera or a rangefinder, and the sensor data may correspond to a three-dimensional sensor image that may be used to determine a location of the vehicle.

TECHNICAL FIELD

Examples described herein relate to satellite positioning systems, and more specifically to calibrating position estimates from satellite signals used in satellite positioning systems.

BACKGROUND

Satellite positioning systems (e.g., GPS, Galileo, GLONASS) typically include a constellation of satellites in non-geosynchronous orbit (NGSO) above the surface of the earth. The satellites broadcast signals that can be detected and by satellite receivers on the surface of the earth. More specifically, the satellite orbits may be arranged such that a satellite receiver at any point on the earth's surface may have a direct line of sight to at least four satellites in the constellation, ignoring occlusions such as buildings or mountains. A satellite receiver may use the satellite signals received from four or more satellites to determine its location or position on the earth's surface (e.g., using trilateration techniques). For example, the satellite receiver may calculate its distance to each of the four satellites based on the propagation times of their respective satellite signals. Thus, the accuracy of the position determination may depend on the accuracy of the timing information for each of the satellite signals.

A number of factors may affect the timing of satellite signals. For example, various weather and/or atmospheric conditions may impede (e.g., delay) the propagation of satellite signals. Tall buildings and other obstructions may further interfere with signal propagation. These factors may be hard to estimate directly and thus affect the resulting positioning estimate often introducing meters to tens of meters of error. Thus, it may be desirable to compensate for timing errors in the satellite signals received by a satellite receiver to more accurately determine the location of the receiver.

DETAILED DESCRIPTION

Examples described herein provide for a sensor-based vehicle registration system that may be used to provide differential corrections for satellite positioning information broadcast by one or more satellites of a satellite positioning system. The system receives sensor data from one or more sensors provided on a vehicle and provides independent positioning estimates with respect to a map using the sensor data. The system further detects satellite signals from one or more satellites, and determines timing offsets associated with the satellite signals from each of the one or more satellites based at least in part on the sensor data. For example, the one or more sensors may include at least one of a camera or a rangefinder. In some aspects, the sensor data may correspond to a three-dimensional sensor image.

According to some examples, the system determines a location of the vehicle based at least in part on the sensor data received from the one or more sensors. For example, the system may compare the sensor data to a predetermined map of registered locations and determine a relative proximity of the vehicle to one or more of the registered locations based on the comparison. In some aspects, the predetermined map of registered locations may be generated based at least in part on previously-acquired sensor data.

In determining the timing offsets, for example, the system may calculate respective distances to each of the one or more satellites based at least in part on the location of the vehicle. The system may then calculate expected signal propagation times for satellite signals from each of the one or more satellites based at least in part on the respective distances. The system may compare the expected signal propagation times with actual signal propagation times to determine the timing offsets. In some aspects, the system may further calculate multipath reflections based on the sensor data and the location of the vehicle.

The system may communicate the timing offsets to one or more satellite receivers within a threshold proximity of the vehicle. In some aspects, the system may update the timing offsets based at least in part on movements of the vehicle. For example, as the vehicle moves across a map, from one location to another, the system may calculate new timing offsets for the satellite signals detected at a new location on the map. These new timing offsets may further be communicated to one or more satellite receivers within a threshold proximity of the new location.

Numerous examples are referenced herein in context of an autonomous (e.g., self-driving) vehicle. An autonomous vehicle refers to any vehicle which is operated in a state of automation with respect to steering and propulsion. Different levels of autonomy may exist with respect to autonomous vehicles. For example, some vehicles today enable automation in limited scenarios, such as on highways, provided that drivers are present in the vehicle. More advanced autonomous vehicles drive without any human driver inside the vehicle. Such vehicles often are required to make advance determinations regarding how the vehicle is behave given challenging surroundings of the vehicle environment. Although described herein in the context of autonomous vehicles, the example systems and methods for generating differential correction signals may be implemented by non-autonomous vehicles and/or other types of devices equipped with local sensors (e.g., cameras, laser rangefinders, radar, etc.) and satellite receivers.

As used herein, a “satellite positioning system” may refer to any satellite-based location detection and/or navigation system. More specifically, a satellite positioning system may comprise a constellation of satellites in non-geosynchronous orbit (NGSO) above the surface of the earth. The satellites broadcast signals that can be detected and used by satellite receivers to determine their respective positions on the surface of the earth (e.g., through trilateration). Examples of satellite positioning system may include, for example, global positioning system (GPS), global navigation satellite system (GLONASS), Galileo, BeiDou, etc. For purposes of discussion, the terms “satellite positioning system,” “satellite system,” and “GPS” may be used herein interchangeably.

System Description

FIG. 1shows a block diagram of a control system100for operating an autonomous vehicle in accordance with example implementations. The control system100includes a sensor apparatus101, perception logic110, prediction logic120, a motion planning controller130, routing logic140, a vehicle controller150, localization logic160, and a map database170. In an example ofFIG. 1, the control system100is used to autonomously operate a vehicle (not shown for simplicity) in a given geographic region for a variety of purposes, including transport services (e.g., transport of humans, delivery services, etc.). In examples described, an autonomously operated vehicle can drive and/or navigate without human intervention. For example, in the context of automobiles, an autonomously driven vehicle can steer, accelerate, shift, brake and operate lighting components. Some variations also recognize that an autonomous-capable vehicle can be operated autonomously, manually, or a combination of both.

In an example ofFIG. 1, the control system100utilizes a number of sensor resources (e.g., in the sensor apparatus101) to intelligently guide or navigate the vehicle through a given environment. For example, the sensor apparatus101may include a number of sensors that generate respective sensor data111. Each sensor of the sensor apparatus101may capture a particular type of information about the surrounding environment. In an example ofFIG. 1, the sensor apparatus101may include a number of camera modules that can capture still images and/or videos, a laser rangefinder that can determine distance information to nearby objects (e.g., using laser ranging techniques), an inertial measurement unit (IMU) that can detect linear acceleration and/or rotational velocities pertaining to the autonomous vehicle, and/or any other sensors that may be used to detect information about the autonomous vehicle or its surrounding environment (e.g., proximity sensors, touch sensors, photosensors, sonar, radar, rotary encoders, etc.).

In example implementations, the perception logic110generates perception data112based on the sensor data111. More specifically, the perception logic110may collect and/or aggregate sensor data111from multiple sensors to create a more detailed description of the surrounding environment (e.g., provided as perception data111) that can be used to more effectively navigate the vehicle through the environment. For example, the perception logic110may determine the relative distance of the ground or road surface to the vehicle, the type and/or composition of the road, the distance from the vehicle to the “static” environment (e.g., consisting of fixed or relatively permanent objects), etc. In some aspects, the sensor model125may include information pertaining to detected objects in the vicinity of the vehicle and/or contextual information about the object, surroundings, and/or geographic region, for purposes of making predictive determinations to navigate the vehicle to a particular destination while avoiding collisions.

In some aspects, the perception data112may include a three-dimensional (3D) sensor image of the surrounding environment. For example, the 3D sensor image may include image data, captured by multiple camera modules (e.g., of sensor apparatus101), “stitched” together to create stereoscopic images of the surrounding environment. The stereoscopic images may be used to detect the presence, sizes, and/or distances of objects in the vicinity of the vehicle. In some examples, the image data may be combined with laser rangefinder data to produce a more complete picture of the surrounding environment. In some aspects, the laser rangefinder data may complement the image data for purposes of detecting objects that may not be detectable from the image data alone. In other aspects, the laser rangefinder data may be used to check or validate the image data, and vice-versa.

The prediction logic120may generate prediction data122based on the perception data112. More specifically, the prediction logic120may use the information about the vehicle (e.g., sensor data111) and/or knowledge about the surrounding environment (e.g., perception data112) to predict the trajectory of the vehicle. For example, the prediction data122may include semantic information indicating a probable location and/or bearing of the vehicle at one or more future instances (e.g., 5, 10, or 20 seconds in the future). In some aspects, the prediction data122may indicate a likelihood of collision with other objects in the vicinity of the vehicle based at least in part on the vehicle's current trajectory.

The motion planning controller130generates vehicle commands (CV)85based at least in part on the prediction data122and routing information152received from the routing logic140. In some aspects, the routing information152may specify a route for the vehicle to traverse (e.g., from its current location to its destination). Thus, the motion planning controller130may use the prediction data122and/or sensor data111to navigate the vehicle along the route specified by the routing information152. For example, the motion planning controller130may control and/or plan the movements of the vehicle by issuing vehicle commands85(e.g., instructions) that may be used to programmatically control various electromechanical interfaces of the vehicle. In some aspects, the motion planning controller130may generate detailed lane geometry and control measures that impact lane control, positioning, and/or speed of the vehicle.

The vehicle commands85may serve as inputs to control one or more operational facets of the vehicle such as, for example, acceleration, braking, steering, shifting, and/or other auxiliary functions (e.g., interior and/or exterior lighting). More specifically, the vehicle commands85may specify actions that correlate to one or more vehicle control mechanisms (e.g., turning a steering column, applying brake pressure, shifting gears, etc.). In some aspects, the vehicle commands85may specify actions, along with attributes such as magnitude, duration, directionality, or other operational characteristics of the vehicle.

The vehicle controller150processes the vehicle commands85to control one or more operations of the vehicle. More specifically, the vehicle controller150may generate control signals119to control acceleration, steering, braking, shifting, and/or other mechanical (or electrical) functions of the vehicle. For example, while the vehicle follows a particular route, the vehicle controller150may continuously adjust and/or alter the movement (e.g., speed, direction, acceleration, etc.) of the vehicle in response to the vehicle commands85provided (e.g., in real-time) by the motion planning controller130.

The control signals119may be provided as inputs to one or more vehicle actuators102. In some aspects, each of the vehicle actuators102may provide drive-by-wire (DBW) functionality for a respective vehicle operation. For example, each of the vehicle actuators102may manage and/or control one or more mechanical components of the vehicle (e.g., engine/motor, steering column, brakes, gear selector, etc.) in response to the control signals119. In some aspects, the vehicle actuators120may be response to input signals from one or more manual input mechanisms (e.g., depending on the operating mode of the vehicle). For example, when operating in autonomous mode, the vehicle actuators102may receive the control signals119from the vehicle controller. On the other, when operating in manual mode, the vehicle actuators102may receive the input signals from one or more manual input mechanisms (e.g., gas/brake pedals, steering wheel, gear selector, etc.).

In example implementations, the localization logic160may determine the vehicle's location based at least in part on the sensor data111generated by the one or more sensors of the sensor apparatus101. In some aspects, the localization logic160may compare the sensor data111with pre-registered data or information associated with “known” or registered locations (e.g., mapping information172) to identify points of interest (e.g., buildings, signs, landmarks, etc.) in the vicinity of the vehicle, and to determine a relative proximity of the vehicle to the identified points of interest. Accordingly, the localization logic160may determine a precise location of the vehicle based on the registered locations of the points of interest (POIs) and their respective distances from the vehicle. In other aspects, the localization logic160may determine the precise location of the vehicle based on the topology or surface geometry of the surrounding environment (e.g., by comparing the sensor data111with pre-registered mapping information172identifying known locations based on topology or surface geometry). As such, in one example, the routing logic140can determine the routing information152for the vehicle to travel based, at least in part, on data determined from the localization logic160.

The map database170may be prepopulated with mapping information172for a number of POIs and/or surface geometries. In some aspects, the mapping information172stored in the map database170may be dynamically updated based on sensor data111acquired from the sensor apparatus101. For example, localization logic160may determine more detailed descriptions of existing POIs and/or surface geometries, and may identify new POIs and/or surface geometries, based on the sensor data111generated as the vehicle navigates through a given environment. Thus, the sensor data111may be correlated with location information and stored in the map database170(e.g., as mapping information172).

Specifically, the localization logic160may determine the location of the vehicle based on local sensor data (e.g., used for machine vision), without the aid of satellite positioning information. However, in some aspects, the localization logic160may use the vehicle's location to determine the accuracy of satellite signals broadcast by one or more satellites of a satellite positioning system. As described above, weather, atmospheric conditions, buildings, and/or various other obstructions may interfere with (e.g., impede) the propagation of satellite signals directed toward the surface of the earth. Additionally, there may be inherent inaccuracies in the trajectories of the satellites. Thus, the example implementations recognize that the sensor-based location information may be more accurate and precise than position information derived from the received satellite signals.

In some implementations, the localization logic160may compare the sensor-based location information with corresponding satellite positioning information to determine a correction factor (e.g., timing offset) that may be applied to each of the satellite signals to correct any inaccuracies inherent in the satellite positioning information. For example, the correction factors may indicate adjustments to be made to the received satellite signals in order to derive a more accurate position reading. In some aspects, the localization logic may further calculate and/or correct for multipath reflections based on the sensor data and the location of the vehicle.

Further, it may be assumed that other satellite receivers within a threshold proximity of the vehicle associated with the localization logic160(e.g., the “registered vehicle”) receive the same satellite signals, under the same conditions, as the registered vehicle. Thus, in some aspects, the localization logic160may communicate the correction factors to other satellite receivers in the vicinity (e.g., via the network service), to enable the satellite receivers to calibrate their received satellite signals with respect to the known location of the registered vehicle.

FIG. 2shows a block diagram of a sensor-based differential correction system200in accordance with example implementations. In one example, the sensor-based (SB) differential correction system200may be implemented by the localization logic160ofFIG. 1. Alternatively, in another example, the SB differential correction system200may be in communication with the localization logic160. For example, the SB differential correction system200may be provided on an autonomous vehicle equipped with a plurality of local sensors (e.g., cameras, laser rangefinders, radar, etc.). In some aspects, the SB differential correction system200may be used to determine a location of the corresponding vehicle based at least in part on sensor data generated by the local sensors. In other aspects, the SB differential correction system200may be used to calibrate satellite signals received from one or more satellites of a satellite positioning system (not shown for simplicity).

The SB differential correction system200includes a location mapper210, a satellite receiver220, and differential correction logic230. The location mapper210receives sensor data201from a set of local sensors and determines location information203for the vehicle based at least in part on the sensor data201. For example, the sensor data201may be used to guide or navigate a vehicle through a given environment. In some aspects, the sensor data201may correspond to “raw” sensor data111from the sensor apparatus101(e.g., cameras, laser rangefinders, IMUs, etc.) provided on an autonomous vehicle. In other aspects, the sensor data201may correspond to a 3D sensor image of the vehicle's surrounding environment.

In some implementations, the location mapper210may compare the sensor data201with mapping information202(e.g., from map database170) to determine the location information203. The example implementations recognize that the sensor data201may provide a detailed and accurate description of a vehicle's surrounding environment (e.g., to enable autonomous navigation and/or driving). More specifically, the sensor data201may be matched with corresponding descriptions of known locations to determine the precise location of the vehicle. In some aspects, the mapping information202may include descriptions (e.g., shape, size, color, and/or other descriptive data such as image data) and locations (e.g., longitude, latitude, and/or other coordinate data such as map data) of known POIs. In other aspects, the mapping information202may include descriptions of surface geometry and/or other identifiable features of a particular location.

The location mapper210may compare the sensor data201(e.g., image data captured by one or more cameras) with mapping information202to determine which, if any, of the known POIs and/or surface geometries are located in the vicinity of the vehicle. The location mapper210may further determine, from the sensor data201(e.g., distance data captured by one or more laser rangefinders), a relative proximity of the vehicle to each of the one or more POIs and/or surface geometries in the vicinity of the vehicle. The location mapper210may then extrapolate the location information203for the vehicle based on the known locations of the POIs and/or surface geometries (e.g., as determined from the mapping information202) and their respective distances from the vehicle.

The satellite receiver220may receive satellite signals208from one or more satellites of a satellite positioning system (e.g., GPS). Each satellite signal208may include a pseudorandom number sequence that may be used to calculate the propagation time of the satellite signal (e.g., from a corresponding satellite to the satellite receiver220). More specifically, each satellite signal208may include satellite position information204indicating the position (e.g., in space) of the corresponding satellite at the time the pseudorandom sequence was transmitted, and timing information206indicating a time of transmission (TOT) of the pseudorandom sequence. In some aspects, the timing information206may further include a time of arrival (TOA) of the pseudorandom sequence. For example, the satellite receiver220may calculate the TOA by comparing the pseudorandom sequence in the received signal208with an internally-generated pseudorandom sequence that is synchronized with a local clock.

In example implementations, the differential correction logic230may use the location information203to generate differential correction signals207for each of the received satellite signals208. For example, the differential correction logic230may compare the sensor-based location information203(e.g., derived from the sensor data201) with satellite-based location information (e.g., based on the satellite signals208) in order to calibrate the satellite signals208to be used to derive a more accurate and/or precise location estimation. The differential correction logic230may include a satellite distance calculator232to determine the distance from the vehicle to a corresponding satellite, and a timing offset calculator234to detect errors (e.g., delays) in the propagation time of a satellite signal.

The satellite distance calculator232may compare the location information203for the vehicle with the satellite position information204for a particular satellite to determine the distance (D) from the vehicle to the particular satellite. As described above, the example implementations presume that the sensor-based location information203provides a highly accurate and precise indication of the vehicle's actual location. Thus, the distance information205may describe the “actual” distance between the vehicle and the corresponding satellite.

The timing offset calculator234may use the distance information205to determine the accuracy of the timing information206provided by corresponding satellite signals208. For example, the timing offset calculator234may determine the actual propagation time (TA) of a particular satellite signal208by comparing the signal's TOT to the signal's TOA (e.g., TA=TOA−TOT). The timing offset calculator234may further determine an expected propagation time (TE) of the particular satellite signal208based on the distance information205(e.g., TE=D/c, where c=speed of light). Finally, the timing offset calculator234may determine a differential correction factor207(e.g., timing offset) associated with the satellite signals208of the particular satellite based on the difference between the actual propagation time and the expected propagation time (e.g., correction factor=TA−TE).

The correction factor207may be used by the satellite receiver220and/or other satellite receivers in the vicinity (not shown) to adjust and/or calibrate the satellite signals208. For example, in some aspects, the satellite receiver220may determine the location of the vehicle by calculating respective distances from the vehicle to each of four or more satellites (e.g., using well-known trilateration techniques). More specifically, the satellite receiver220may calculate its distance to each satellite based on the satellite position information204and timing information206from corresponding satellite signals208broadcast by the satellite. As described above, weather, atmospheric conditions, buildings, and/or other obstructions may introduce delays in the actual propagation times (e.g., TOA) of the received satellite signals208. However, the satellite receiver220may offset such delays by adjusting the timing information206(e.g., TOA) based on the correction factor207. This may enable the satellite receiver220to derive more accurate timing information, and thus a more accurate location of the vehicle, from the received satellite signals208.

FIG. 3shows a map diagram300depicting an example autonomous vehicle310that uses sensor data to navigate an environment. In an example ofFIG. 3, the autonomous vehicle310may include various sensors, such as a roof-top camera array (RTC)314, front-facing cameras316and laser rangefinders318. In some aspects, the autonomous vehicle310may also include a vehicle registration controller (VRC)312, which may be used to determine a location of the autonomous vehicle310based at least in part on sensor data acquired from the various sensors314-318. The VRC312may be an example implementation of the localization logic160ofFIG. 1and/or the sensor-based differential correction system200ofFIG. 1.

According to an example, the vehicle310uses one or more sensor views320(e.g., sensor data from cameras, rangefinders, IMUs, and/or other local sensors provided on the vehicle310) to scan a road segment on which the vehicle310is about to traverse. The vehicle310may process image data, corresponding to the sensor views320from one or more sensors in order to detect objects that are, or may potentially be, in the path of the vehicle310. For example, based on the sensor views320, the autonomous vehicle310may detect another vehicle330which may potentially cross into a road segment on which the vehicle310is about to traverse. The autonomous vehicle310may use information about the road segment and/or image data from the sensor views320to determine that the road segment includes a divider305and an opposite lane, as well as a sidewalk (SW)301and sidewalk structures such as parking meters (PM)303.

According to some examples, the autonomous vehicle310may determine a probability that one or more objects in the environment will interfere or collide with the autonomous vehicle310along the vehicle's current path or route. In some aspects, the autonomous vehicle310may selectively perform an avoidance action based on the probability of collision. The avoidance actions may include velocity adjustments, lane aversion, roadway aversion (e.g., change lanes or driver far from curb), light or horn actions, and other actions. For example, the autonomous vehicle310may reduce its speed upon detecting a crosswalk360in the sensor view320(e.g., based on a greater likelihood of pedestrians crossing the road). In some aspects, the avoidance action may run counter to certain driving conventions and/or rules (e.g., allowing the autonomous vehicle310to drive across center line to create space with a bicyclist).

The autonomous vehicle310may determine the location, size, and/or distance of objects in the environment based on the sensor views320. For example, the sensor views320may be 3D sensor images that combine sensor data from the roof-top camera array314, front-facing cameras316, and/or laser rangefinders318. In some implementations, the autonomous vehicle310may update the sensor views320in real-time as the autonomous vehicle310moves along its designed route. Accordingly, the autonomous vehicle310may precisely and accurately detect the presence of objects in the environment, allowing the autonomous vehicle310to safely navigate the route while avoiding collisions with other objects.

In example implementations, the autonomous vehicle310may also determine points of interest (POIs) in the vicinity of the vehicle310, based at least in part on the sensor views320. For example, a POI may be any building, structure, object, or feature that is uniquely identifiable on a map. In some aspects, the VRC312may process the sensor data from the various sensors314-318to identify buildings340and/or350as POIs in the sensor views320. For example, based on the size, shape, and/or architectural design of the individual buildings340and350, the VRC312may identify building340as a hospital building and may further identify building350as a school building.

The example implementations recognize that buildings and other POIs may have relatively fixed and/or permanent locations. Thus, in some aspects, the VRC312may determine the location of the autonomous vehicle310based at least in part on the relative locations of one or more POIs in the vicinity of the vehicle310. For example, the hospital building340may have a unique street address and/or geographic coordinates (e.g., longitude and latitude positions) that describe the location hospital building340on the map300. Similarly, the school building350may also have a unique street address and/or geographic coordinates that describe the location of the school building350on the map300. The VRC312may determine the relative proximity (e.g., distance) of the autonomous vehicle310to each of the buildings340and350based at least in part on sensor data from the various sensors314-318and/or sensor views320. Thus, based on the known locations of the buildings340and350, and the relative proximity of the autonomous vehicle310to the buildings340and/or350, the VRC312may determine the location of the vehicle310with a relatively high degree of accuracy and precision.

In some aspects, the VRC312may use the location of the autonomous vehicle310to calibrate satellite signals received from one or more satellites of a satellite positioning system (e.g., GPS). For example, in some implementations, the autonomous vehicle310and/or VRC312may include a satellite receiver that receives the satellite signals from the one or more satellites (not shown for simplicity). As described above with respect toFIG. 2, the VRC312may use the location of the autonomous vehicle310to determine differential correction (DC) signals311that may be used to calibrate the received satellite signals. For example, the DC signals311may include timing offsets to be applied to the received satellite signals to offset any propagation delays in the received satellite signals (e.g., to acquire more accurate and/or precise positioning information from the satellite signals).

Still further, in some aspects, the VRC312may communicate the DC signals311to one or more GPS receivers within a threshold proximity of the autonomous vehicle310. In the example ofFIG. 3, the VRC312may communicate the DC signals311to a GPS receiver332provided on vehicle330. In some implementations, the VRC312may directly broadcast the DC signals311to other GPS receivers within range using one or more short-range wireless communication protocols (e.g., Wi-Fi, Bluetooth, NFC, etc.). In other implementations, the VRC312may upload the DC signals311to a network (e.g., mapping or navigation) service, which may then broadcast the DC signals311to one or more GPS receivers in a given geographic region (e.g., using Wi-Fi, satellite, and/or cellular communication protocols).

In yet another embodiment, the VRC312may communicate its sensor data (e.g., sensor views320) and corresponding satellite positioning information to the network service. The network service may calculate the timing offsets for the satellite signals based on the vehicle's sensor data. Accordingly, the network service may broadcast the timing offset information (e.g., as DC signals311) to other vehicles in the vicinity of the registered vehicle310.

Due to their relatively close proximity, it is likely that the vehicle330and the autonomous vehicle310have a direct line of sight to the same satellites of the satellite positioning system. Thus, the satellite signals detected by the GPS receiver332may undergo the same propagation delays and/or interference as the satellite signals detected by the VRC312. Accordingly, the GPS receiver332may use the DC signals311generated by the VRC312to derive more accurate positioning information for the vehicle330based on the received satellite signals.

By using an autonomous vehicle's on-board GPS receiver as a reference for performing differential correction of satellite signals, the example implementations may provide many advantages over conventional differential GPS systems that use dedicated base stations (e.g., with well-known fixed locations) as references. For example, the vehicle-based differential correction techniques described herein may leverage existing vehicle sensors (e.g., sensors314-318) and/or sensor data (e.g., sensor views320) to determine a precise reference location for received satellite signals. Furthermore, the sensor data may be continuously and/or periodically updated (e.g., in real-time) as the vehicle moves through a given environment. Thus, the example implementations may lower the deployment costs, while increasing scalability, of differential GPS systems. Still further, in some aspects, the example implementations may improve and/or complement existing differential GPS systems (e.g., that use pre-registered base stations with fixed locations).

FIG. 4shows a map diagram400depicting a distributed differential correction (DC) system in accordance with example implementations. The distributed DC system includes a number of registered vehicles410and420that report or register their respective locations to a network (e.g., mapping or navigation) service. Each of the registered vehicles410and420may be an example implementation of the autonomous vehicle310ofFIG. 3and/or may include features of the autonomous vehicle310(e.g., sensors314-318and VRC312). Although only two registered vehicles410and420are shown in the example ofFIG. 4, for simplicity, the distributed DC system may include any number of registered vehicles.

In example implementations, each of the registered vehicles410and420may use on-board vehicle sensors (e.g., cameras, laser rangefinders, IMUs, etc.) to determine their respective locations on the map400. For example, in some aspects, the on-board vehicle sensors may generate sensor data (e.g., 3D sensor images) that may be used to navigate and/or drive the vehicles410and420through a given environment. The registered vehicles410and420may also include satellite receivers to receive satellite signals432,442,452, and462broadcast by respective satellites430,440,450, and460of a satellite positioning system. In some aspects, each of the vehicles410and420may detect timing offsets in the received satellite signals432,442,452, and462based on the known locations of the vehicles410and420(e.g., as described above with respect toFIGS. 2 and 3).

Each of the registered vehicles410and420may communicate the timing offset information (e.g., as differential correction signals) to other GPS receivers within a threshold range. For example, the first registered vehicle410may communicate its DC signals to any GPS receivers within a first DC zone412. Similarly, the second registered vehicle420may communicate its DC signals to any GPS receivers within a second DC zone422. The example implementations recognize that, although the registered vehicles410and420may receive the same satellite signals432,442,452, and462, the signal delays experienced by each of the vehicles410and420may differ based on their respective locations on the map400. The example implementations further recognize that the first registered vehicle410may receive satellite signals from one or more additional satellites that are not in communications range with the second registered vehicle420, and vice-versa. Thus, the DC signals generated by the first registered vehicle410(e.g., broadcast within the first DC zone412) may differ from the DC signals generated by the second registered vehicle420(e.g., broadcast within the second DC zone422).

In the example ofFIG. 4, a number of non-registered vehicles401-403are located throughout the map400. For purposes of discussion, it may be assumed that each of the vehicles401-403also receives the satellite signals432,442,452, and462broadcast by the satellites430,440,450, and460, respectively. More specifically, the first vehicle401is located within the first DC zone412, the second vehicle402is located within the second DC zone422, and the third vehicle403is located within both DC zones412and422. Accordingly, the first vehicle401may receive the DC signals (e.g., timing offset information) generated by the first registered vehicle410, and may calibrate its received satellite signals432,442,452, and462based on the timing offset information (e.g., as described above with respect toFIG. 3). The second vehicle402may receive the DC signals (e.g., timing offset information) generated by the second registered vehicle420, and may calibrate its received satellite signals432,442,452, and452based on the corresponding timing offset information (e.g., as described above with respect toFIG. 3).

In some aspects, the third vehicle403may receive DC signals from both the first registered vehicle410and the second registered vehicle420. For example, the third vehicle403may combine the timing offset information included with the DC signals generated by both registered vehicles410and420in determining the timing offsets to be applied to its received satellite signals432,442,452, and462. Averaging the timing offsets detected by each of the registered vehicles410and420may produce timing offsets that are more accurate and/or applicable for the third vehicle403(e.g., and any other GPS receiver at the intersection of the first DC zone412and the second DC zone422).

In general, the timing offset information calculated by a particular registered vehicle may be less accurate and/or applicable for GPS receivers located farther from the registered vehicle (e.g., at the edge of the corresponding DC zone). However, in the example implementations, GPS receivers located at the intersection (e.g., edges) of multiple DC zones may have access to more timing offset data (e.g., from multiple registered vehicles) to more accurately calibrate their received satellite signals. Furthermore, as the registered vehicles move about the map400, there is a high likelihood that their respective DC zones will intersect and/or overlap with the DC zones of other registered vehicles. Thus, the example implementations may provide a more even distribution of timing offset information across the map400.

In some aspects, the differential correction system may be managed by a network service (not shown for simplicity) in communication with each of the registered vehicles410and420. For example, the network service may receive sensor-based location information from each of the registered vehicles410and420, and may register the locations of the vehicles410and420on the map400based on the received location information. The network service may further receive the DC signals generated by each of the registered vehicles410and420, and may broadcast the DC signals to GPS receivers within the respective DC zones412and422. In some aspects, the network service may further combine or aggregate DC signals from multiple registered vehicles410and420to provide more accurate timing offset information to a particular region of the map400(e.g., the intersection of DC zones412and422).

FIG. 5shows a block diagram of a vehicle registration system500in accordance with example implementations. In some aspects, the vehicle registration system500may provide vehicle locating services for registered vehicles. In other aspects, the vehicle registration system500may provide satellite calibration services for non-registered vehicles (e.g., and registered vehicles). According to an example, the vehicle registration system500can be implemented by a set of computing systems (e.g., servers) that are remote from the registered vehicles and in communication with the registered vehicles (over one or more networks). The vehicle registration system500includes a vehicle registration interface510, a vehicle database520, a zone configurator530, a differential correction (DC) calculator540, a DC aggregator550, a satellite database560, and a differential correction interface570.

The vehicle registration interface510may receive vehicle registrations signals501from one or more registered vehicles (e.g., registered vehicle310ofFIG. 3and/or registered vehicles410and420ofFIG. 4). The vehicle registration signals501may include, for example, vehicle identification (ID) information, sensor-based (SB) location information, and satellite information. The vehicle ID may identify the registered vehicle associated with a particular vehicle registration signal501. The SB location information may describe the location of the vehicle, determined based on locally-generated sensor data (e.g., as described above with respect toFIGS. 2 and 3). The satellite information may describe any satellite signals detected or received by the registered vehicle (e.g., satellite position information204and timing information206ofFIG. 2).

The vehicle database520may store the information provided with the vehicle registration signals501. For example, a vehicle locator service, user, and/or owner associated with one or more registered vehicles may access the information stored in the vehicle database520to determine the location of the one or more registered vehicles. In some aspects, the vehicle database520may include a vehicle ID partition522, a vehicle location partition524, and a satellite date partition526. The vehicle ID partition522may store the vehicle IDs for one or more registered vehicles. The vehicle location partition524may store vehicle location information for the one or more registered vehicles. The satellite data partition526may store information associated with any satellite signals detected by the one or more registered vehicles.

In example implementations, the vehicle registration system500may provide differential correction information to GPS receivers in the vicinity of the one or more registered vehicles. In some aspects, the vehicle registration system500may generate differential correction signals for different regions of a map by aggregating satellite data received from registered vehicles within each map region. For example, the zone configurator530may subdivide a map into one or more DC zones or regions based, at least in part, on an availability of registered vehicles and/or satellite data in each zone. The DC calculator540may calculate differential correction information for each registered vehicle in the vehicle database520based on the location of the vehicle and the satellite data received by the vehicle (e.g., as described above with respect toFIG. 2). The DC aggregator550may then combine or aggregate the differential correction information for the registered vehicles within each zone to determine differential correction information to be broadcast to all GPS receivers within a particular zone.

With reference to the example map diagram600ofFIG. 6, the vehicle registration system500may receive vehicle registration signals501from a number of registered vehicles601-613located throughout the map600. Each of the vehicles601-613may determine their respective locations based on locally-generated sensor data. Furthermore, each of the vehicles601-613may detect satellite signals from one or more satellites of a satellite positioning system (not shown for simplicity). In the example ofFIG. 6, the zone configurator530may partition the map600into six regions (e.g., DC zones) A1, A2, B1, B2, C1, and C2. The DC calculator540may calculate timing offsets (e.g., differential correction information) for satellite signals received by each of the vehicles601-613based on their respective locations. The DC aggregator550may further combine the differential correction information for multiple registered vehicles within each zone.

For example, the DC aggregator550may combine the differential correction information (e.g., generated by the DC calculator540) for vehicles601and603in zone A1. The DC aggregator550may combine the differential correction information for vehicles602and604in zone A2. The DC aggregator550may combine the differential correction information for vehicles606and607in zone B1. The DC aggregator550may combine the differential correction information for vehicles605and608in zone B2. The DC aggregator550may combine the differential correction information for vehicles610and611in zone C1. The DC aggregator550may combine the differential correction information for vehicles609,612, and613in zone C2.

When combining differential correction information for multiple vehicles, the DC aggregator550may average the timing offsets for any satellite signals commonly detected by the vehicles in a particular region. For example, in zone A1, vehicles601and603may detect satellite signals from many of the same satellites. These satellite signals may be referred to herein as “shared” satellite signals. Thus, for some implementations, the DC aggregator550may average the timing offsets for the shared satellite signals in zone A1.

The satellite database560may store the differential correction information generated by the DC aggregator550. In some aspects, the satellite database560may include a zone identification (ID) partition562, a satellite identification (ID) partition564, and a timing offset partition566. The zone ID partition562may store information identifying or describing the DC zones or regions (e.g., A1, A2, B1, B2, C1, C2) of a particular map. The satellite ID partition564may store information identifying the satellites that were detected by registered vehicles within a particular DC zone or region. The timing offset partition566may store timing offset information (e.g., differential correction information) for satellite signals broadcast by the satellites associated with a particular DC zone or region. In some aspects, the vehicle registration system500may update the information stored in the satellite database560with more current or updated information based on movements of the registered vehicles (e.g., as the vehicles move across the different zones or regions).

The differential correction interface may communicate DC signals502to any GPS receivers within the vicinity of one or more registered vehicles. For example, the DC signals502may include timing offset information (e.g., stored in the timing offset partition566) that may be used to calibrate (e.g., correct the timing of) one or more satellite signals, and satellite identification information identifying the satellites associated with the one or more satellite signals. In example implementations, the differential correction interface570may broadcast the DC signals502to each of the DC zones such that any GPS receivers within a particular DC zone may receive the same differential correction information. For example, a first set of DC signals502may be broadcast to zone A1, a second set of DC signals502may be broadcast to zone A2, a third set of DC signals502may be broadcast to zone B1, a fourth set of DC signals502may be broadcast to zone B2, a fifth set of DC signals502may be broadcast to zone C1, and a sixth set of DC signals502may be broadcast to zone C2.

Methodology

FIG. 7shows a flowchart of an example operation700for calibrating satellite signals based on vehicle sensor data. The operation700may be implemented, for example, by the localization logic160ofFIG. 1. Accordingly, references made herein to the elements ofFIG. 1are for purposes of illustrating a suitable element or component for performing a step or sub-step being described.

The localization logic160receives sensor data from one or more vehicle sensors (710). For example, the sensor data may correspond to the sensor model125(e.g., a 3D sensor image) and/or raw sensor data111-115generated by the local sensor apparatuses101-105(e.g., cameras, laser rangefinders, IMUs, etc.) of the autonomous vehicle control system100. In some aspects, the sensor data may be used (e.g., by the vehicle control logic128) to navigate and/or drive an autonomous vehicle through a given environment. Thus, the sensor data may provide a detailed and accurate description of the vehicle's surrounding environment.

The localization logic160further detects satellite signals from one or more satellites of a satellite positioning system (720). For example, each satellite signal may include satellite position information, indicating the position (e.g., in space) of a corresponding satellite, and timing information, indicating when the satellite signal was transmitted. A satellite (e.g., GPS) receiver may receive the satellite signals, and may calculate its own position on the surface of the earth based on the satellite position information and timing information provided by the satellite signals (e.g., using well-known trilateration techniques).

The localization logic160may then determine timing offsets associated with the satellite signals from each of the one or more satellites based at least in part on the sensor data (730). For example, the localization logic160may determine the location of the vehicle based on the sensor data, and may use the vehicle's location to determine the accuracy of the satellite signals broadcast by the one or more satellites. More specifically, the example embodiments recognize that the sensor-based location information may be more accurate and precise than position information derived from the received satellite signals (e.g., due to weather, atmospheric conditions, buildings, and/or other obstructions that may interfere with the propagation of satellite signals toward the surface of the earth). Thus, for some embodiments, the localization logic160may determine timing offsets (e.g., differential correction factors) that may be used to calibrate the received satellite signals based on the known location of the vehicle (e.g., determined from the sensor data).

FIG. 8shows a flowchart of an example operation800for generating differential correction factors for one or more satellites of a satellite positioning system based on vehicle sensor data. The operation800may be implemented, for example, by the sensor-based (SB) differential correction system200ofFIG. 2. Accordingly, references made herein to the elements ofFIG. 2are for purposes of illustrating a suitable element or component for performing a step or sub-step being described.

The SB differential correction system200may first determine a vehicle location based on sensor data generated by one or more sensors provided on the vehicle (810). For example, the location mapper210may receive sensor data201from a set of local sensors (e.g., cameras, laser rangefinders, IMUs, etc.). In some aspects, the sensor data may be used to guide and/or navigate the vehicle through a given environment (e.g., in an autonomous manner). In example implementations, the location mapper210may compare the sensor data201with mapping information202stored in the map data store212to determine the location of the vehicle. For example, as described above with respect toFIG. 2, the sensor data201may be matched with corresponding descriptions of known locations (e.g., image and/or map data) to determine the precise location of the vehicle.

The SB differential correction system200may further receive satellite signals from respective satellites of a satellite positioning system (820). For example, the satellite receiver220may receive satellite signals208from one or more satellites. Each satellite signal208may include a pseudorandom number sequence that may be used to calculate the propagation time of the satellite signal (e.g., from a corresponding satellite to the satellite receiver220). More specifically, each satellite signal208may include satellite position information204indicating the position (e.g., in space) of the corresponding satellite at the time the pseudorandom sequence was transmitted, and timing information206indicating a time of transmission (TOT) of the pseudorandom sequence. In some aspects, the timing information206may further include a time of arrival (TOA) of the pseudorandom sequence (e.g., as determined by the satellite receiver220).

The SB differential correction system200may then calculate distances to respective satellites based on the vehicle location and the satellite position information (830). For example, the satellite distance calculator232may compare the location information203for the vehicle with the satellite position information204for a particular satellite to determine the distance from the vehicle to the particular satellite. As described above, with respect toFIG. 2, the example implementations presume that the distance information205may describe the “actual” distance (D) between the vehicle and the corresponding satellite.

The SB differential correction system200may determine actual and expected signal propagation times from the respective satellites (840). For example, the actual propagation times may represent the time it actually took for each satellite signal208to reach the satellite receiver220(e.g., including propagation delays due to weather, atmospheric conditions, and/or other obstructions), whereas the expected propagation times may represent the time it should have taken each satellite signal208to reach the satellite receiver220(e.g., assuming no propagation delays). In some aspects, the timing offset calculator234may determine the actual propagation time (TA) of a particular satellite signal208by comparing the signal's TOT to the signal's TOA (e.g., TA=TOA−TOT). In other aspects, the timing offset calculator234may use the distance information205to determine the expected propagation time (TE) of a particular satellite signal208(e.g., TE=D/c, where c=speed of light).

Finally, the SB differential correction system200may compare the actual signal propagation times with the expected signal propagation times to determine differential correction factors for respective satellites (850). For example, the differential correction logic230may use the sensor-based location information203to determine the accuracy of the timing information206provided by the received satellite signals208. In some implementations, the timing offset calculator234may determine a differential correction factor207(e.g., timing offset) associated with the satellite signals208of a particular satellite based on the difference between the actual propagation time and the expected propagation time (e.g., correction factor=TA−TE). The differential correction factors generated by the SB differential correction system200may be used by other satellite (e.g., GPS) receivers in the vicinity to adjust and/or calibrate their received satellite signals (e.g., as described above with respect toFIGS. 3 and 4).

Hardware Diagram

FIG. 9shows a block diagram of a vehicle registration system900that may be implemented on an autonomous vehicle, in accordance with example embodiments. Alternatively, the vehicle registration system900may be implemented on one or more computing systems that communicate with a set of autonomous vehicles, such as described with an example ofFIG. 5. The vehicle registration system900may be implemented using one or more processors910, memory resources920, a number on-board vehicle sensors930, and a satellite receiver940. In the context ofFIGS. 1 and 2, the autonomous vehicle control system100and/or sensor-based differential correction system200may be implemented using one or more components of the vehicle registration system900.

According to some examples, the vehicle registration system900may be implemented within an autonomous vehicle with software and hardware resources such as described with examples ofFIGS. 1 and 2. In an example shown, the vehicle registration system900may be distributed spatially into various regions of a vehicle. For example, the processors910and/or memory resources920may be provided in the trunk of a vehicle. The various processing resources of the vehicle registration system900may also include distributed sensor logic932, which may be implemented using microprocessors or integrated circuits. In some examples, the distributed sensor logic932may be implemented using field-programmable gate arrays (FPGA).

In an example ofFIG. 9, the vehicle registration system900may include a local communication interface970(or series of local links) to vehicle interfaces and other resources of an autonomous vehicle. In one implementation, the local communication interface970provides a data bus or other local link to electro-mechanical interfaces of the vehicle, such as used to operate steering, acceleration and braking, as well as to data resources of the vehicle (e.g., vehicle processor, OBD memory, etc.). The vehicle registration system900may further include multiple communication interfaces, such as real-time (RT) communication interface950and asynchronous communication interface960. The various communication interfaces950and960may send and receive communications to other vehicles, central services, human assistance operators, and/or other remote entities for a variety of purposes.

One or more of the communication interfaces950and/or960may enable the autonomous vehicle to communicate with one or more networks (e.g., Wi-Fi, satellite, and/or cellular network) through use of a network link980, which can be wireless or wired. The vehicle registration system900may establish and use multiple network links980at the same time. Using the network link980, the vehicle registration system900may communicate with one or more remote entities, such as network services or human operators. In one implementation, the real-time communication interface950may be optimized to communicate information instantly, in real-time to remote entities (e.g., human assistance operators). In contrast, the asynchronous communication interface960may communicate information at predetermined intervals and/or according to a schedule (e.g., vehicle status updates, software updates, etc.).

The memory resources920may include, for example, main memory, a read-only memory (ROM), storage device, and cache resources. The main memory of memory resources920may include random access memory (RAM) or other dynamic storage device, for storing information and instructions which are executable by the processors910. The processors910may execute instructions for processing information stored with the main memory of the memory resources920. The main memory may also store temporary variables or other intermediate information which may be used during execution of instructions by one or more of the processors910. The memory resources920may include ROM or other static storage device for storing static information and instructions for one or more of the processors910. The memory resources920may also include other forms of memory devices and components, such as a magnetic disk or optical disk, for purpose of storing information and instructions for use by one or more of the processors910.

According to some examples, the memory920may store a plurality of software instructions including, for example, sensor-based (SB) location determination software922, SB satellite calibration software924, sensor data read software1016, and differential correction (DC) aggregation software926. During runtime (e.g., when the vehicle is operational), the software instructions922-926may be executed by one or more of the processors910in order to implement functionality such as described with respect to the autonomous vehicle control system100ofFIG. 1and/or the sensor-based differential correction system200ofFIG. 2.

For example, in operating an autonomous vehicle, the one or more processors910may execute the SB location determination software922to determine a location of the autonomous vehicle based at least in part on sensor data901generated by the on-board vehicle sensors930(e.g., as described above with respect toFIGS. 1-3). For example, in executing the SB location determination software922, the one or more processors910may compare the sensor data901with mapping information (e.g., image and/or map data) associated with one or more predetermined or known locations (e.g., stored by the memory resources920) to determine the precise location of the autonomous vehicle.

Further, the one or more processors910may execute the SB satellite calibration software924to determine differential correction factors (e.g., timing offsets) that may be used to calibrate received satellite signals based on the location of the vehicle (e.g., as described above with respect toFIGS. 1-3). For example, in executing SB satellite calibration software924, the one or more processors910may calculate distances to respective satellites based on the vehicle location, and may determine expected signal propagation times from the respective satellites based on the calculated distances. The one or more processors910may then compare the expected signal propagation times with the actual propagation times of the received satellite signals to determine propagation delays (e.g., represented by the differential correction factors) attributable to weather, atmospheric conditions, and/or other sources of interference.

In some aspects, the one or more processors910may execute the DC aggregation software926to combine and/or aggregate differential correction information collected from multiple sources, for the same satellites (e.g., as described above with respect toFIGS. 4-6). For example, in executing the DC aggregation software926, the one or more processors910may combine the differential correction information generated by the vehicle registration system900with differential correction information received from other autonomous vehicles in the vicinity to determine more precise and/or accurate timing offsets to be applied to the received satellite signals.

It is contemplated for embodiments described herein to extend to individual elements and concepts described herein, independently of other concepts, ideas or system, as well as for embodiments to include combinations of elements recited anywhere in this application. Although embodiments are described in detail herein with reference to the accompanying drawings, it is to be understood that the invention is not limited to those precise embodiments. As such, many modifications and variations will be apparent to practitioners skilled in this art. Accordingly, it is intended that the scope of the invention be defined by the following claims and their equivalents. Furthermore, it is contemplated that a particular feature described either individually or as part of an embodiment can be combined with other individually described features, or parts of other embodiments, even if the other features and embodiments make no mentioned of the particular feature. Thus, the absence of describing combinations should not preclude the inventor from claiming rights to such combinations.