Alignment of visual inertial odometry and satellite positioning system reference frames

A method for aligning visual-inertial odometry (VIO) and satellite positioning system (SPS) reference frames includes obtaining a plurality of range-rate measurements of a mobile platform from an SPS. The range-rate measurements are with respect to a global reference frame of the SPS. The method also includes obtaining a plurality of VIO velocity measurements of the mobile platform from a VIO system. The VIO velocity measurements are with respect to a local reference frame of the VIO system. At least one orientation parameter is then determined to align the local reference frame with the global reference frame based on the range-rate measurements and the VIO velocity measurements.

FIELD OF DISCLOSURE

This disclosure relates generally to the use of satellite positioning systems (SPS), and in particular, but not exclusively, relates to the alignment of visual inertial odometry (VIO) reference frame with an SPS reference frame.

BACKGROUND

Mobile platforms offer increasingly sophisticated capabilities associated with the motion and/or position location sensing of the mobile platform. New software applications, such as, for example, those related to personal productivity, collaborative communications, social networking, and/or data acquisition, may utilize motion and/or position sensors to provide new features and services to consumers.

Such motion and/or position determination capabilities may be provided using Satellite Positioning Systems (SPS). However, position determinations based on SPS measurements may have inherent errors on the order of a few meters. Such accuracy may not be sufficient for certain applications. In mobile platforms, position accuracy can be improved by augmenting measurements derived from SPS with other available sensors/systems. For example, position determinations for an SPS included in a vehicle may be supplemented by a mechanical odometer. The mechanical odometer may provide odometry data from the movement of actuators, such as a rotary encoder, to estimate a change in position of the vehicle over time. The odometry data may then be combined with SPS data to improve position determinations. However, the mechanical odometer may suffer from precision problems, since wheels of the vehicle may slip and slide on the road/surface creating a non-uniform distance traveled as compared to odometer data that is based on wheel rotations. This error may be compounded when the vehicle operates on a non-smooth surface. Such mechanical odometer data may become increasingly unreliable as these errors accumulate and compound over time.

SUMMARY

The following presents a simplified summary relating to one or more aspects and/or embodiments associated with the mechanisms disclosed herein to align a visual-inertial odometry (VIO) reference frame with a satellite positioning system (SPS) reference frame. As such, the following summary should not be considered an extensive overview relating to all contemplated aspects and/or embodiments, nor should the following summary be regarded to identify key or critical elements relating to all contemplated aspects and/or embodiments or to delineate the scope associated with any particular aspect and/or embodiment. Accordingly, the following summary presents certain concepts relating to one or more aspects and/or embodiments relating to the mechanisms disclosed herein to align a visual-inertial odometry (VIO) reference frame with a satellite positioning system (SPS) reference frame in a simplified form to precede the detailed description presented below.

According to one aspect, a method for aligning visual-inertial odometry (VIO) and satellite positioning system (SPS) reference frames includes obtaining a plurality of range-rate measurements of a mobile platform from an SPS. The range-rate measurements are with respect to a global reference frame of the SPS. The method also includes obtaining a plurality of VIO velocity measurements of the mobile platform from a VIO system. The VIO velocity measurements are with respect to a local reference frame of the VIO system. At least one orientation parameter is then determined to align the local reference frame with the global reference frame based on the range-rate measurements and the VIO velocity measurements.

According to another aspect, an apparatus for aligning visual-inertial odometry (VIO) and satellite positioning system (SPS) reference frames includes means for obtaining a plurality of range-rate measurements of a mobile platform from a satellite positioning system (SPS), where the plurality of range-rate measurements are with respect to a global reference frame of the SPS. The apparatus also includes means for obtaining a plurality of visual-inertial odometry (VIO) velocity measurements of the mobile platform from a VIO system, where the plurality of VIO velocity measurements are with respect to a local reference frame of the VIO system. The apparatus further includes means for determining at least one orientation parameter to align the local reference frame with the global reference frame based on the plurality of range-rate measurements and the plurality of VIO velocity measurements.

According to yet another aspect, an apparatus for aligning visual-inertial odometry (VIO) and satellite positioning system (SPS) reference frames includes at least one processor and at least one memory coupled to the at least one processor. The at least one processor and the at least one memory are configured to direct the apparatus to: (i) obtain a plurality of range-rate measurements of a mobile platform from a satellite positioning system (SPS), where the plurality of range-rate measurements are with respect to a global reference frame of the SPS; (ii) obtain a plurality of visual-inertial odometry (VIO) velocity measurements of the mobile platform from a VIO system, where the plurality of VIO velocity measurements are with respect to a local reference frame of the VIO system; and (iii) determine at least one orientation parameter to align the local reference frame with the global reference frame based on the plurality of range-rate measurements and the plurality of VIO velocity measurements.

According to another aspect, a non-transitory computer-readable storage medium includes computer-executable instructions recorded thereon. Executing the computer-executable instructions on one or more processors causes the one or more processors to: (i) obtain a plurality of range-rate measurements of a mobile platform from a satellite positioning system (SPS), where the plurality of range-rate measurements are with respect to a global reference frame of the SPS; (ii) obtain a plurality of visual-inertial odometry (VIO) velocity measurements of the mobile platform from a VIO system, where the plurality of VIO velocity measurements are with respect to a local reference frame of the VIO system; and (iii) determine at least one orientation parameter to align the local reference frame with the global reference frame based on the plurality of range-rate measurements and the plurality of VIO velocity measurements.

Other objects and advantages associated with the mechanisms disclosed herein to align a visual-inertial odometry (VIO) reference frame with a satellite positioning system (SPS) reference frame described herein will be apparent to those skilled in the art based on the accompanying drawings and detailed description.

DETAILED DESCRIPTION

Various aspects are disclosed in the following description and related drawings. Alternate aspects may be devised without departing from the scope of the disclosure. Additionally, well-known elements of the disclosure will not be described in detail or will be omitted so as not to obscure the relevant details of the disclosure.

According to one aspect of the disclosure,FIG. 1illustrates an exemplary operating environment100for a mobile platform108that can determine its position using one or more techniques. Embodiments are directed to a mobile platform108which may determine its position utilizing data from both a Satellite Positioning System (SPS)114and a Visual Inertial Odometer (VIO) system116. The SPS measurements124generated by the SPS114may include one or more range-rate measurements (e.g., GPS Doppler measurements) and/or one or more SPS velocity measurements that are representative of a velocity of the mobile platform108.

The VIO system116utilizes several sequential images120captured by a camera118to estimate a relative position, velocity, acceleration, and/or orientation of the mobile platform108. The camera118may include a single monocular camera, a stereo camera, and/or an omnidirectional camera. In operation, the VIO system116acquires the images120generated by the camera118in order to generate the VIO velocity measurements128. In one aspect, the VIO system116may apply one or more image processing techniques to the images120, detect one or more features, match those features across multiple frames to construct an optical flow, and estimate motion of the mobile platform108based on the optical flow. The VIO system116then generates VIO velocity measurements128that represent an estimated velocity of the mobile platform108based on the estimated motion.

By combining the VIO velocity measurements128with the SPS measurements124, the mobile platform108may increase the accuracy of position determinations of the mobile platform108. However, the SPS measurements124and the VIO velocity measurements128may be each made with respect to separate coordinate systems. For example, the SPS measurements124may be with respect to a global reference frame126, such as an Earth-Centered, Earth-Fixed (ECEF) coordinate system, such as the WGS84 coordinate system used with GPS, while the VIO velocity measurements128may be with respect to a separate local reference frame130. While the global reference frame126may be known and common to any system using the same satellite positioning network, the local reference frame130may depend, in part, on the specific orientation of the mobile platform108. That is, the local reference frame130may change depending on the position and/or orientation of the mobile platform108within environment100. Thus, in order to combine the VIO velocity measurements128with the SPS measurements124, the mobile platform108may align local reference frame130with the global reference frame126. In one aspect, the mobile platform108determines one or more orientation parameters (e.g., rotation matrix) to align the local reference frame130with the global reference frame126based solely on the SPS measurements124and the VIO velocity measurements128. These and other aspects will be described in more detail below.

The operating environment100may contain one or more different types of wireless communication systems and/or wireless positioning systems. In the embodiment shown inFIG. 1, one or more Satellite Positioning System (SPS) satellites102a,102bmay be used as an independent source of position information for the mobile platform108. The SPS114of mobile platform108may include one or more dedicated SPS receivers specifically designed to receive signals for deriving geo-location information from the SPS satellites102a,102b.

The operating environment100may also include one or more Wide Area Network Wireless Access Points (WAN-WAPs)104a,104b,104c, which may be used for wireless voice and/or data communication, and as another source of independent position information for the mobile platform108. The WAN-WAPs104a-104cmay be part of a wide area wireless network (WWAN), which may include cellular base stations at known locations, and/or other wide area wireless systems, such as, for example, Worldwide Interoperability for Microwave Access (WiMAX) (e.g., IEEE 802.16). The WWAN may include other known network components which are not shown inFIG. 1for simplicity. Typically, each of the WAN-WAPs104a-104cwithin the WWAN may operate from fixed positions, and provide network coverage over large metropolitan and/or regional areas.

The operating environment100may further include one or more Local Area Network Wireless Access Points (LAN-WAPs)106a,106b,106c, which may be used for wireless voice and/or data communication, as well as another independent source of position data. The LAN-WAPs can be part of a Wireless Local Area Network (WLAN), which may operate in buildings and perform communications over smaller geographic regions than a WWAN. Such LAN-WAPs106a-106cmay be part of, for example, Wi-Fi networks (802.11x), cellular piconets and/or femtocells, Bluetooth networks, etc.

The mobile platform108may derive position information from any one or more of the SPS satellites102a,102b, the WAN-WAPs104a-104c, and/or the LAN-WAPs106a-106c. Each of the aforementioned systems can provide an independent estimate of the position for the mobile platform108using different techniques. In some embodiments, the mobile platform108may combine the solutions derived from each of the different types of access points to improve the accuracy of the position data. When deriving position using the SPS satellites102a,102b, the mobile platform108may utilize a receiver specifically designed for use with the SPS that extracts position, using conventional techniques, from a plurality of signals transmitted by SPS satellites102a,102b.

SPS satellites102aand102bare part of a satellite system that typically includes a system of transmitters positioned to enable entities to determine their location on or above the Earth based, at least in part, on signals received from the transmitters. Such a transmitter typically transmits a signal marked with a repeating pseudo-random noise (PN) code of a set number of chips and may be located on ground-based control stations, user equipment and/or space vehicles. In a particular example, such transmitters may be located on Earth orbiting satellite vehicles (SVs). For example, a SV in a constellation of Global Navigation Satellite System (GNSS) such as Global Positioning System (GPS), Galileo, Glonass or Compass may transmit a signal marked with a PN code that is distinguishable from PN codes transmitted by other SVs in the constellation (e.g., using different PN codes for each satellite as in GPS or using the same code on different frequencies as in Glonass). In accordance with certain aspects, the techniques presented herein are not restricted to global systems (e.g., GNSS) for SPS. For example, the techniques provided herein may be applied to or otherwise enabled for use in various regional systems, such as, e.g., Quasi-Zenith Satellite System (QZSS) over Japan, Indian Regional Navigational Satellite System (IRNSS) over India, Beidou over China, etc., and/or various augmentation systems (e.g., an Satellite Based Augmentation System (SBAS)) that may be associated with or otherwise enabled for use with one or more global and/or regional navigation satellite systems. By way of example but not limitation, an SBAS may include an augmentation system(s) that provides integrity information, differential corrections, etc., such as, e.g., Wide Area Augmentation System (WAAS), European Geostationary Navigation Overlay Service (EGNOS), Multi-functional Satellite Augmentation System (MSAS), GPS Aided Geo Augmented Navigation or GPS and Geo Augmented Navigation system (GAGAN), and/or the like. Thus, as used herein satellite systems used herein may include any combination of one or more global and/or regional navigation satellite systems and/or augmentation systems, and SPS signals may include SPS, SPS-like, and/or other signals associated with such one or more SPS.

Furthermore, the disclosed method and apparatus may be used with positioning determination systems that utilize pseudolites or a combination of satellites and pseudolites. Pseudolites are ground-based transmitters that broadcast a PN code or other ranging code (similar to a GPS or CDMA cellular signal) modulated on an L-band (or other frequency) carrier signal, which may be synchronized with GPS time. Each such transmitter may be assigned a unique PN code so as to permit identification by a remote receiver. Pseudolites are useful in situations where GPS signals from an orbiting satellite might be unavailable, such as in tunnels, mines, buildings, urban canyons or other enclosed areas. Another implementation of pseudolites is known as radio-beacons. The term “satellite”, as used herein, is intended to include pseudolites, equivalents of pseudolites, and possibly others. The term “SPS signals,” as used herein, is intended to include SPS-like signals from pseudolites or equivalents of pseudolites.

When deriving position from the WWAN, each WAN-WAPs104a-104cmay take the form of base stations within a digital cellular network, and the mobile platform108may include a cellular transceiver and processor that can exploit the base station signals to derive position. Such cellular networks may include, but are not limited to, standards in accordance with GSM, CMDA, 2G, 3G, 4G, LTE, etc. It should be understood that digital cellular network may include additional base stations or other resources that may not be shown inFIG. 1. While WAN-WAPs104a-104cmay actually be moveable or otherwise capable of being relocated, for illustration purposes it will be assumed that they are essentially arranged in a fixed position.

The mobile platform108may perform position determination using known time-of-arrival (TOA) techniques such as, for example, Advanced Forward Link Trilateration (AFLT). In other embodiments, each WAN-WAP104a-104cmay comprise a WiMAX wireless networking base station. In this case, the mobile platform108may determine its position using TOA techniques from signals provided by the WAN-WAPs104a-104c. The mobile platform108may determine positions either in a stand-alone mode, or using the assistance of a positioning server110and network112using TOA techniques. Furthermore, various embodiments may have the mobile platform108determine position information using WAN-WAPs104a-104c, which may have different types. For example, some WAN-WAPs104a-104cmay be cellular base stations, and other WAN-WAPs104a-104cmay be WiMAX base stations. In such an operating environment, the mobile platform108may be able to exploit the signals from each different type of WAN-WAP104a-104c, and further combine the derived position solutions to improve accuracy.

When deriving position using the WLAN, the mobile platform108may utilize TOA techniques with the assistance of the positioning server110and the network112. The positioning server110may communicate to the mobile platform108through network112. Network112may include a combination of wired and wireless networks which incorporate the LAN-WAPs106a-106c. In one embodiment, each LAN-WAP106a-106cmay be, for example, a Wi-Fi wireless access point, which is not necessarily set in a fixed position and can change location. The position of each LAN-WAP106a-106cmay be stored in the positioning server110in a common coordinate system. In one embodiment, the position of the mobile platform108may be determined by having the mobile platform108receive signals from each LAN-WAP106a-106c. Each signal may be associated with its originating LAN-WAP based upon some form of identifying information that may be included in the received signal (such as, for example, a MAC address). The mobile platform108may then sort the received signals based upon signal strength, and derive the time delays associated with each of the sorted received signals. The mobile platform108may then form a message which can include the time delays and the identifying information of each of the LAN-WAPs, and send the message via network112to the positioning sever110. Based upon the received message, the positioning server110may then determine a position, using the stored locations of the relevant LAN-WAPs106a-106c, of the mobile platform108. The positioning server110may generate and provide a Location Configuration Indication (LCI) message to the mobile platform108that includes a pointer to the position of the mobile platform108in a local coordinate system. The LCI message may also include other points of interest in relation to the location of the mobile platform108. When computing the position of the mobile platform108, the positioning server110may take into account the different delays which can be introduced by elements within the wireless network.

The position determination techniques described above may be used for various wireless communication networks such as a WWAN, a WLAN, a wireless personal area network (WPAN), and so on. The term “network” and “system” may be used interchangeably. A WWAN may be a Code Division Multiple Access (CDMA) network, a Time Division Multiple Access (TDMA) network, a Frequency Division Multiple Access (FDMA) network, an Orthogonal Frequency Division Multiple Access (OFDMA) network, a Single-Carrier Frequency Division Multiple Access (SC-FDMA) network, a WiMAX (IEEE 802.16) network, and so on. A CDMA network may implement one or more radio access technologies (RATs) such as cdma2000, Wideband-CDMA (W-CDMA), and so on. Cdma2000 includes IS-95, IS-2000, and IS-856 standards. A TDMA network may implement Global System for Mobile Communications (GSM), Digital Advanced Mobile Phone System (D-AMPS), or some other RAT. GSM and W-CDMA are described in documents from a consortium named “3rd Generation Partnership Project” (3GPP). Cdma2000 is described in documents from a consortium named “3rd Generation Partnership Project 2” (3GPP2). 3GPP and 3GPP2 documents are publicly available. A WLAN may be an IEEE 802.11x network, and a WPAN may be a Bluetooth network, an IEEE 802.15x, or some other type of network. The techniques may also be used for any combination of a WWAN, WLAN and/or WPAN.

As used herein, mobile platform108may be a device such as a vehicle (manned or unmanned), a robot, a cellular or other wireless communication device, personal communication system (PCS) device, personal navigation device, Personal Information Manager (PIM), Personal Digital Assistant (PDA), laptop or other suitable mobile device that is capable of capturing images and navigating using internal sensors. The term “mobile platform” is also intended to include devices which communicate with a personal navigation device (PND), such as by short-range wireless, infrared, wireline connection, or other connection—regardless of whether satellite signal reception, assistance data reception, and/or position-related processing occurs at the device or at the PND. Also, “mobile platform” is intended to include all devices, including wireless communication devices, computers, laptops, etc. which are capable of communication with a server, such as via the Internet, Wi-Fi, or other network, and regardless of whether satellite signal reception, assistance data reception, and/or position-related processing occurs at the device, at a server, or at another device associated with the network. Any operable combination of the above is also considered a “mobile platform.”

Furthermore, in one embodiment, the mobile platform108may be suitably linked to a vehicle through one or more communication interfaces (e.g., a Bluetooth interface, an RF antenna, a wired connection, etc.) that enable the mobile platform108to read SPS measurements124and/or VIO velocity measurements obtained by the vehicle, itself. Furthermore, an application program interface (API) that supports communication between the mobile platform108and a vehicle may make the SPS measurements124and/or VIO velocity measurements128, obtained by the vehicle, available to the mobile platform108.

FIG. 2illustrates an example mobile platform200that may be used in an operating environment100that can determine position using one or more techniques, according to one aspect of the disclosure. Mobile platform200is one possible implementation of mobile platform108ofFIG. 1.

The various features and functions illustrated in the diagram ofFIG. 2are connected together using a common data bus224which is meant to represent that these various features and functions are operatively coupled together. Those skilled in the art will recognize that other connections, mechanisms, features, functions, or the like, may be provided and adapted as necessary to operatively couple and configure an actual portable device. Further, it is also recognized that one or more of the features or functions illustrated in the example ofFIG. 2may be further subdivided or two or more of the features or functions illustrated inFIG. 2may be combined.

The mobile platform200may include one or more wireless transceivers202that may be connected to one or more antennas240. The wireless transceiver202may include suitable devices, hardware, and/or software for communicating with and/or detecting signals to/from WAN-WAPs104a-104c, and/or directly with other wireless devices within a network. For example, the wireless transceiver202may comprise a CDMA communication system suitable for communicating with a CDMA network of wireless base stations; however in other aspects, the wireless communication system may comprise another type of cellular telephony network, such as, for example, TDMA or GSM. Additionally, any other type of wide area wireless networking technologies may be used, for example, WiMAX (IEEE 802.16), etc. The wireless transceiver202may also include one or more local area network (LAN) transceivers that may be connected to one or more antennas240. For example, the wireless transceiver202may include suitable devices, hardware, and/or software for communicating with and/or detecting signals to/from LAN-WAPs106a-106c, and/or directly with other wireless devices within a network. In one aspect, the wireless transceiver202may include a Wi-Fi (802.11x) communication system suitable for communicating with one or more wireless access points; however in other aspects, the wireless transceiver202comprise another type of local area network, personal area network, (e.g., Bluetooth). Additionally, any other type of wireless networking technologies may be used, for example, Ultra Wide Band, ZigBee, wireless USB etc.

As used herein, the abbreviated term “wireless access point” (WAP) may be used to refer to LAN-WAPs106a-106cand/or WAN-WAPs104a-104c. Specifically, when the term “WAP” is used, it should be understood that embodiments may include a mobile platform200that can exploit signals from a plurality of LAN-WAPs106a-106c, a plurality of WAN-WAPs104a-104c, or any combination of the two. The specific type of WAP being utilized by the mobile platform200may depend upon the environment of operation. Moreover, the mobile platform200may dynamically select between the various types of WAPs in order to arrive at an accurate position solution. In other embodiments, various network elements may operate in a peer-to-peer manner, whereby, for example, the mobile platform200may be replaced with the WAP, or vice versa. Other peer-to-peer embodiments may include another mobile platform (not shown) acting in place of one or more WAP.

As shown inFIG. 2, mobile platform200may also include a camera204. Camera204may be a single monocular camera, a stereo camera, and/or an omnidirectional camera. In one aspect, camera204is calibrated such that the camera parameters (e.g., focal length, displacement of the optic center, radial distortion, tangential distortion, etc.) are known. Camera204is coupled to control unit210to provide images244to the control unit210.

The illustrated example of mobile platform200also includes a motion sensor206. Motion sensor206may be coupled to control unit210to provide movement and/or orientation information which is independent of motion data derived from signals received by the wireless transceiver202, the SPS208, and the VIO system226.

By way of example, the motion sensor206may include an accelerometer (e.g., a MEMS device), a gyroscope, a geomagnetic sensor (e.g., a compass), an altimeter (e.g., a barometric pressure altimeter), and/or any other type of movement detection sensor. Moreover, the motion sensor206may include a plurality of different types of devices and combine their outputs in order to provide motion information. For example, the motion sensor206may use a combination of a multi-axis accelerometer and orientation sensors to provide the ability to compute positions in 2-D and/or 3-D coordinate systems.

A Satellite Positioning System (SPS)208may also be included in the mobile platform200. The SPS208may be connected to the one or more antennas242for receiving satellite signals. The SPS208may comprise any suitable hardware and/or software for receiving and processing SPS signals. The SPS208requests information and operations as appropriate from the other systems, and performs the calculations necessary to determine the mobile platforms200position using measurements obtained by any suitable SPS algorithm. In one aspect, SPS208is coupled to control unit210to provide one or more SPS measurements246to the control unit210. In one example, the SPS measurements246are range-rate measurements, such as GPS Doppler range-rate measurements. In another example, SPS208is configured to determine an SPS velocity of the mobile platform200based on the range-rate measurements such that the SPS measurements246are the SPS velocity measurements. That is, SPS measurements246may include the range-rate measurements by themselves, the SPS velocity measurements by themselves, and/or any combination of the two.

Mobile Platform200also includes a control unit210that is connected to and communicates with the wireless transceiver202, the camera204, the motion sensor206, the SPS208, and user interface212, if present. In one aspect, the control unit210accepts and processes images244received from the camera204as well as SPS measurements246received from SPS208. Control unit210may be provided by a processor214and associated memory220, hardware216, firmware218, and software222.

The processor214may include one or more microprocessors, microcontrollers, and/or digital signal processors that provide processing functions, as well as other calculation and control functionality. The processor214may also include memory220for storing data and software instructions for executing programmed functionality within the mobile platform200. The memory220may be on-board the processor214(e.g., within the same IC package), and/or the memory may be external memory to the processor214and functionally coupled over data bus224. The functional details associated with aspects of the disclosure will be discussed in more detail below.

Control unit210may further include a Visual Inertial Odometry (VIO) system226, a positioning module228, a position database230, and an application module232. VIO system226may be configured to generate VIO velocity measurements248in response to the images244received from camera204. The positioning module228may be configured to determine a position of the mobile platform based on one or more positioning techniques. As will be discussed in more detail below, positioning module228may be configured to determine a position of the mobile platform200by combining the VIO velocity measurements248with the SPS measurements246. The position database232may be configured to store and update the position and/or orientation of the mobile platform200. That is, as the control unit210determines a new position and/or orientation of the mobile platform200, the position database230may be updated. The updated position and orientation information may then be provided, e.g., by displaying a digital map with the new position on the display238or by providing additional navigation instructions on the display and/or via speaker234.

The application module232may be a process running on the processor214of the mobile platform200, which requests position information from the positioning module228. Applications typically run within an upper layer of the software architectures, and may include Indoor/Outdoor Navigation, Buddy Locator, Shopping and Coupons, Asset Tracking, and location Aware Service Discovery.

Processor214, VIO system226, positioning module228, and position database230are illustrated separately for clarity, but may be a single unit and/or implemented in the processor214based on instructions in the software222which is run in the processor214. Processor214, VIO system226, positioning module228can, but need not necessarily include, one or more microprocessors, embedded processors, controllers, application specific integrated circuits (ASICs), digital signal processors (DSPs), and the like. The term processor describes the functions implemented by the system rather than specific hardware. Moreover, as used herein the term “memory” refers to any type of computer storage medium, including long term, short term, or other memory associated with mobile platform200, and is not to be limited to any particular type of memory or number of memories, or type of media upon which memory is stored.

For a firmware and/or processor/software implementation, the processes may be implemented with modules (e.g., procedures, functions, and so on) that perform the functions described herein. Any non-transitory computer-readable medium tangibly embodying instructions may be used in implementing the processes described herein. For example, program code may be stored in memory220and executed by the processor214. Memory220may be implemented within or external to the processor214.

The mobile platform200may include an optional user interface212which provides any suitable interface systems, such as a microphone/speaker234, keypad236, and display238that allows user interaction with the mobile platform200. The microphone/speaker234provides for voice communication services using the wireless transceiver202. The keypad236comprises any suitable buttons for user input. The display238comprises any suitable display, such as, for example, a backlit LCD display, and may further include a touch screen display for additional user input modes.

In one aspect, the mobile platform200is configured to determine a position of the mobile platform200by combining the SPS measurements246with the VIO velocity measurements248to improve accuracy of the position determination. However, as mentioned above, the SPS measurements246may be with respect to a global reference frame126, while the VIO velocity measurements248are with respect to a local reference frame130. Thus, in order to combine the SPS measurements246with the VIO velocity measurements248, the mobile platform200may first align the local reference frame130with the global reference frame126. In one aspect, the positioning module228of control unit210is configured to determine an orientation parameter, such as a rotation matrix, to align the local reference frame130with the global reference frame126. In one example, the positioning module228determines the orientation parameter based on the SPS measurements246and the VIO velocity measurements248. Two approaches to perform this estimation are provided below, one where the estimation of the orientation parameter is based on SPS velocity measurements obtained from the SPS208, and another approach where the estimation is based on raw range-rate measurements also obtained from the SPS208.

As mentioned above, the SPS measurements246obtained from SPS208may include SPS velocity measurements of the mobile platform200. In a first approach, both SPS and VIO velocity measurements are accumulated over time, such that a “best” rotation matrix may be determined that matches the SPS velocity measurements with the VIO velocity measurements. In this example, the SPS velocity measurements may be used, since, in an open-sky condition, the SPS velocity measurements may contain relatively small estimation errors (e.g., 0:1 m/s), which in turn allows positioning module228to determine a very reliable estimate of the orientation parameter.

Alternatively, the SPS measurements246obtained from the SPS208may include range-rate measurements, such as GPS Doppler range-rate measurements. Thus, the positioning module228may determine the orientation parameter directly from the range-rate measurements without explicitly having to have the mobile platform200solve for the SPS velocities. In one aspect, this allows the mobile platform200to determine the orientation parameter even if insufficient range-rate measurements are available to solve for the SPS velocity. That is, in this example, the number of range-rate measurements used by the positioning module228to determine the orientation parameter may be less than is required to calculate the SPS velocity of the mobile platform200.

Aspects of aligning the local reference frame with a global reference frame, discussed in detail below combines a quaternion reformulation of the problem together with a semidefinite relaxation technique that can provide a significant performance improvement.

FIG. 3illustrates an example process300of aligning a visual-inertial odometry (VIO) reference frame with a satellite positioning system (SPS) reference frame, according to one aspect of the disclosure. In process block302, positioning module228obtains range-rate measurements246from SPS208, where the range-rate measurements are with respect to a global reference frame126. In one aspect, the SPS208provides the raw range-rate measurements from different satellites during each epoch of a length of one second. The tropospheric, ionospheric, and satellite clock biases may be assumed to be corrected in these range-rate measurements, either through standard modules used in single-point solutions or from network data. The corrected range-rate measurements may be modeled as:
{dot over (ρ)}s(t)∇sT(t)(v(t)−vs(t))+{dot over (b)}(t)+ws(t)  EQ (1)
where,

∇s⁢(t)⁢=Δ⁢(x~⁡(t)-xs⁡(t))x~⁡(t)-xs⁡(t)EQ⁢⁢(2)
is the unit vector from the satellite s (e.g., satellite102a) to a coarse estimate {tilde over (x)}(t) of the mobile platform200position x(t). v(t) and vs(t) are velocities of the mobile platform200and the satellite s, respectively, {dot over (b)}(t) is the receiver clock drift of SPS208, and ws(t) captures all other noise in the measurements. Such a course position estimate, accurate to within, e.g.,200m, can be computed using standard models.

Next, in process block304, the positioning module228obtains VIO velocity measurements248from VIO system226, where the VIO velocity measurements248are with respect to a local reference frame130. The VIO system226may utilize the images244generated by camera204as well as data provided by one or more of the motion sensors206(e.g., accelerometer and gyroscope) to generate VIO velocity measurements248. The VIO velocity measurements248generated by the VIO system226may be a vector of velocities and rotation matrices at each time instant along with estimates of the variances. The rate at which the VIO velocity measurements248are generated by VIO system226may be around 100 per second, which is much higher than the rate of the SPS measurements246generated by SPS208, which is around 1 per second. The rotation matrices included in the VIO velocity measurements248describe the camera204orientation at the current time instant with respect to an initial camera reference frame. In some aspects, the VIO velocity measurements248are very accurate and have a drift of around 1% as a function of distance, i.e., an error of 1 m over 100 m.

The VIO system226provides the positioning module228with VIO velocity measurements248in the local reference frame130that may be arbitrarily chosen at system startup. In order to integrate the VIO velocity measurements248with the SPS measurements246, positioning module228determines at least one orientation parameter (e.g., estimates a rotation matrix) to align the local reference frame130with the global reference frame126(i.e., process block306). In one aspect, aligning the local reference frame130with the global reference frame126includes translating the VIO velocity measurements248into the global reference frame126. To estimate the orientation parameter, such as the rotation matrix, positioning module228obtains the SPS measurements246in the global reference frame126that relate to the VIO velocity measurements248in the local reference frame130. In one aspect, range-rate measurements (e.g., Doppler range-rate measurements) obtained from the SPS208can be used for this purpose. Once the orientation parameter (e.g., rotation matrix) is determined, the VIO velocity measurements248can be translated into the global reference frame as will be described below.

As mentioned above, in one aspect, the GPS measurements246provided by the SPS208may include SPS velocity measurements (e.g., GPS Doppler velocity measurements) that are representative of a velocity of the mobile platform200. When mobile platform200is in an open-sky environment using the SPS velocity measurements are relatively accurate. Using the SPS velocity measurements to determine the orientation parameter may provide a closed-form solution. Furthermore, the orientation parameter may not change significantly over time, as in the case of a vehicle, where changes in the orientation parameter may be mainly due to a slow drift associated with the VIO system226as well as possible resets of the reference frame used by the VIO system226. Thus, utilizing the SPS velocity measurements may be used by mobile platform200whenever good quality SPS velocity measurements are available from SPS208.

Continuing with this example, let v(t) equal the true velocity of mobile platform200in the global reference frame126, let vG(t) equal the SPS velocity measurement246from the SPS208, and let vv(t) equal the VIO velocity measurement248obtained from the VIO system226. Thus, these parameters may be modeled as
vG(t)v(t)+zG(t),
vV(t)Rv(t)+zV(t)  EQ (3a)
where, R is the rotation matrix relating the global and local reference frames and where the respective noises in the measurements are denoted by zG(t) and zv(t). In one aspect, positioning module228estimates the rotation matrix R over a window size of T. For example, consider a set of measurements in the time interval {t−T+1, t−T+2, . . . t}. This expression assumes for ease of notation that time is discretized into units of seconds. Equations 3a may then be rewritten over this window as follow,
VG=V+ZG,
VV=RV+ZVEQ (3b)
where V(v(t−T+1), . . . , v(t)), and the matrices VG, VV, ZG, ZVare defined analogously. The positioning module228may then estimate the rotation matrix R as the minimizer of the following least-squares optimization problem,

minimizeQ∈ℝ3×⁢3⁢QVG-VVF2⁢⁢subject⁢⁢to⁢QT⁢Q=I,det⁡(Q)=1,EQ⁢⁢(3⁢c)
where ∥.∥Fdenotes the Frobenius norm. In one aspect, this problem is a special case of the orthogonal Procrustes problem, where the Kabsch algorithm may provide an optimal closed-form solution, as follows:

The Kabsch algorithm can be extended to minimize the weighted Frobenius norm ∥(QVG−VV)W1/2∥F2for some symmetric positive-semidefinite matrix W by computing equation 3e as follows:
U1ΣU2Tsvd(VVWVGT).  EQ (3e)
The remainder of the Kabsch algorithm stays as before. This weighted version of the Kabsch algorithm can be used as a building block for an iteratively reweighted least-squares procedure. Here, positioning module228may start with W=I and then compute a first estimate {circumflex over (R)} of the rotation matrix R. Using this estimate, the positioning module228then computes the residuals {circumflex over (R)}VG−VV. From these residuals, the positioning module228may compute a new weight matrix W. For example, a standard bisquare weight function can be used for this purpose. Positioning module228may repeat this calculation (e.g., 5 times). This iteratively reweighted least-squares approach downweights measurements with large residuals, thereby providing robustness to outliers.

For example, consider a pair of range rate measurements from satellites s and s′ (e.g., satellites102aand102b, respectively) at the same time epoch t. Next, the modified single difference is formed as:
{dot over (y)}ss′(t){dot over (ρ)}s(t)−{dot over (ρ)}s′(t)+∇sT(t)vs(t)−∇s′T(t)vs′(t)  EQ (3f)

From equation (1) above, the modified single difference of equation 3(f) satisfies:
{dot over (y)}ss′(t)=∇ss′T(t)v(t)+ws(t)−ws′(t)  EQ (4)
with,
∇ss′(t)Vs(t)−∇s′(t)  EQ (5a)
In addition to the modified single difference of equation 3(f), also available are the VIO velocity estimates vV(t) as defined above with equation (3a).

The rotation matrix R can then be estimated by the positioning module228as the minimizer of the following least-square problem:

The least-square problem of equation (5b) may be well defined even if the number of satellites is not sufficient to solve for the SPS velocities vG(t) for a particular time epoch t.

Unlike the approach described above utilizing the estimated SPS velocities, the least-squares problem of equation (5b) has no closed-form solution. Instead, iterative numerical methods may be applied to solve it. To this end, rather than solving directly for the orthogonal matrix Q∈3×3, positioning module228may instead solve for the quaternion q∈4that corresponds to it. Formally, this quarternion parametrization associates with each four-dimensional unit-norm vector q, the rotation matrix:

This parameterization is two-to-one, meaning that every unit vector q corresponds a unique rotation matrix Q(q) and to every rotation matrix {tilde over (Q)} correspond exactly two unit vectors q and −q, such that Q(q)=Q(−q)={tilde over (Q)}.

The above least-squares problem can then be rewritten equivalently as:

The estimate {circumflex over (R)} of the rotation matrix R can then be constructed from the minimizer {circumflex over (q)} of equation (7) by setting {circumflex over (R)}Q({circumflex over (q)}).

In one aspect, the positioning module228may then solve the nonlinear problem of equation (7) using an iterative local optimization method. This approach may work well if initialized in the neighborhood of the correct solution. However, the problem of equation (7) may exhibit multiple local minima, and with a randomly chosen starting point, positioning module228may frequently converge to one of those local minimizers instead of attaining the global optimum. To alleviate this problem, in some examples, the positioning module228may utilize a semidefinite relaxation that can be used as a starting point for the local minimization.

For example, note that from equation 6 that the term ∇ss′T(t)QT(q)vV(t) in equation (7) is quadratic in q. This can be seen more explicitly by rewriting this term as:
∇ss′T(t)QT(q)vV(t)=qTWss′(t)qEQ (8a)
with,

Wss′⁡(t)⁢=Δ⁢Ass′⁡(t)⁢Bss′⁡(t),⁢Ass′⁡(t)⁢=Δ⁢(0a1a2a3-a10-a3a2-a2a30-a1-a3-a2a10),⁢Bss′⁡(t)⁢=Δ⁢(0-b1-b2-b3b10-b3b2b2b30-b1b3-b2b10),EQ⁢⁢(8⁢b)
where to simply notation a∇ss′(t) and bvV(t). The identity of equation (8a) can be derived by quaternion manipulations, but can also be verified by direct comparison of the matric equations. The optimization problem of equation (7) can thus be expressed equivalently as,

Thus, it may be observed that {tilde over (P)} is a symmetric, positive semidefinite, rank-one matrix. Moreover, if a matrix {tilde over (P)} is symmetric, positive semidefinite, and rank one, then its eigendecomposition yields {tilde over (P)}=uduTwith ∥u∥=1. If further tr({tilde over (P)})=1, then

1=tr⁡(P~)=tr⁡(uduT)=tr⁡(uT⁢ud)=d,EQ⁢⁢(9⁢c)
so that {tilde over (P)}=uuTfor some unit norm vector u. Thus, the minimization problem of equation (9a) may be rewritten in the equivalent form,

One difficulty in the minimization of equation 10 may be the nonconvex rank constraint. The semidefinite relaxation of this minimization problem is to remove this rank constraint. The relaxed problem may then be expressed as,

The relaxed problem of equation 11 is convex and can be solved efficiently and optimally using for example interior-point methods. Once the global optimizer P of equation (11) has been found, the positioning module228can extract a unit norm vector {tilde over (q)} from it by computing the eigenvector of P corresponding to its largest eigenvalue. This unit norm vector {tilde over (q)} can then be used by the positioning module228as an initial solution for a local iterative optimization procedure for the exact problem of equation 7.

In some aspects, the approach described above of estimating the rotation matrix R may be tightly coupled with outlier-detection algorithms, where the positioning module228may iteratively find good quality range-rate measurements and then compute the rotation matrix.

Once the positioning module228has computed the estimate {circumflex over (R)} of the rotation matrix R, the VIO velocity measurements248can now be oriented (e.g., translated) into the global reference frame126. Note, that with GPS, the SPS measurements246are typically obtained every one second, while the VIO velocity measurements248are obtained at a much higher frequency. For outlier-detection, the displacement information between two time epochs is of interest. For example, let x(t) be the mobile platform200location at time epoch t. The displacement between two epochs t−1 and t may be given by,

In some applications, the positioning module228is configured to recompute the orientation parameter (e.g., rotation matrix) at regular intervals since the local reference frame130can change (e.g., in VIO based systems the reference frame can reset or drift over time). Hence, certain aspects include the positioning module228determining the orientation parameter in a continuous fashion using a sliding window of time.FIG. 4illustrates a sliding window of time402-406with respect to multiple time epochs, according to one aspect of the disclosure. As shown inFIG. 4, the positioning module228may determine a first orientation parameter over a window of time402that extends from time epoch t1to time epoch t10. The window of time for the next determination of the orientation parameter may then slide to window of time404, where the positioning module228determines the orientation parameter using time epochs t2through t11. Similarly, a third determination of the orientation parameter may be performed by utilizing the window of time406that extends between time epoch t3and t12. Thus, the positioning module228obtains the VIO velocity measurements248and the SPS measurements246(e.g., range-rate measurements) over a sliding window of time such that the positioning module228may continuously determine the orientation parameter.

As shown inFIG. 4, the window of time402includes a size408that dictates the number of time epochs used by the positioning module228when determining the orientation parameter. In some aspects, the size408of the windows of time402-406can be made adaptive depending on the quality of measurements being obtained (e.g., line-of-sight scenarios vs multipath scenarios, etc.). In one example, the control unit210may determine the quality of the range-rate measurements based on a magnitude of movement of the mobile platform200, where larger movements are determined to result in higher quality range-rate measurements. The higher the quality of the range-rate measurements the smaller the size408of the window of time.

Further, positioning module228may be configured to filter the SPS measurements246based on the quality of the SPS measurements246obtained from the SPS208. That is, the range-rate measurements included in the SPS measurements246may be filtered based on their respective quality. By way of example, filtering the range-rate measurements may include discarding one or more range-rate measurements if their quality is too low (e.g., magnitude of movement of the mobile platform200is too small). In another example, filtering the range-rate measurements may include weighting one or more range-rate measurements based on their quality (range-rate measurements corresponding to higher magnitudes of movement may be more heavily weighted as compared to range-rate measurements corresponding to lower magnitudes of movement). In yet another example, control unit210and/or SPS208may determine whether a range-rate measurement is a non-line-of-sight measurement and if so, discard the range-rate measurement.

FIG. 5illustrates several sample aspects of components that may be employed in a mobile platform apparatus500configured to support the alignment of a visual-inertial odometry (VIO) local reference frame with a satellite positioning system (SPS) global reference frame as taught herein. Mobile platform apparatus500is one possible implementation of mobile platform108ofFIG. 1and/or mobile platform200ofFIG. 2.

A module502for obtaining range-rate measurements from a satellite positioning system with respect to a global reference frame may correspond at least in some aspects to, for example, a SPS208and/or positioning module228ofFIG. 2. A module504for obtaining visual-inertial odometry (VIO) velocity measurements from a VIO system with respect to a local reference frame may correspond at least in some aspects to, for example, VIO system226and/or positioning module228ofFIG. 2. A module506for determining at least one orientation parameter to align the local reference frame with the global reference frame may correspond at in some aspects to, for example, positioning module228and/or processor214, ofFIG. 2.

The functionality of the modules502-506ofFIG. 5may be implemented in various ways consistent with the teachings herein. In some designs, the functionality of these modules502-506may be implemented as one or more electrical components. In some designs, the functionality of these modules502-506may be implemented as a processing system including one or more processor components. In some designs, the functionality of these modules502-506may be implemented using, for example, at least a portion of one or more integrated circuits (e.g., an ASIC). As discussed herein, an integrated circuit may include a processor, software, other related components, or some combination thereof. Thus, the functionality of different modules may be implemented, for example, as different subsets of an integrated circuit, as different subsets of a set of software modules, or a combination thereof. Also, it will be appreciated that a given subset (e.g., of an integrated circuit and/or of a set of software modules) may provide at least a portion of the functionality for more than one module.

In addition, the components and functions represented byFIG. 5, as well as other components and functions described herein, may be implemented using any suitable means. Such means also may be implemented, at least in part, using corresponding structure as taught herein. For example, the components described above in conjunction with the “module for” components ofFIG. 5also may correspond to similarly designated “means for” functionality. Thus, in some aspects, one or more of such means may be implemented using one or more of processor components, integrated circuits, or other suitable structure as taught herein.

The methods, sequences and/or algorithms described in connection with the aspects disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may reside in RAM, flash memory, ROM, EPROM, EEPROM, registers, hard disk, a removable disk, a CD-ROM, or any other form of storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an ASIC. The ASIC may reside in an IoT device. In the alternative, the processor and the storage medium may reside as discrete components in a user terminal.