Extended dead reckoning accuracy
Patent Information
- Authority / Receiving Office
- TW · TW
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2021-08-10
- Publication Date
- 2022-04-01
Smart Images

Figure TWG2TA000852417_001 
Figure TWG2TA000852417_002 
Figure TWG2TA000852417_003
Abstract
Description
[Technical Field]
[0001] The various forms of this disclosure relate to navigation, including vehicle navigation. [Previous Technology]
[0002] An inertial navigation system (INS) can be used to track the position, velocity, and / or orientation of an object relative to a starting point. INS can be used in conjunction with a Global Navigation Satellite System (GNSS) receiver and can be used for dead reckoning when GNSS signals are unavailable. [Summary of the Invention]
[0003] According to this disclosure, an exemplary method for vehicle navigation may include: determining a first attitude of a vehicle relative to a reference frame at a first epoch. The method may also include: determining the attitude of an inertial navigation system (INS) of the vehicle at a second epoch after the first epoch, based on measurement data from the INS. The method may also include: determining a second attitude of the vehicle at the second epoch based on the determined attitude of the INS. The method may also include: applying constraints to the determined second attitude of the vehicle to generate an updated second attitude of the vehicle, wherein the constraints restrict changes in one or more aspects of the determined second attitude of the vehicle from the first epoch to the second epoch. The method may also include: determining an updated attitude of the INS based on the updated second attitude of the vehicle.
[0004] According to this disclosure, an exemplary device for vehicle navigation may include an inertial navigation system (INS), memory, and one or more processors communicatively coupled to the INS and the memory, wherein the one or more processors are configured to: determine a first attitude of the vehicle relative to a reference frame at a first epoch. The one or more processors may further be configured to: determine the attitude of the INS at a second epoch after the first epoch, based on measurement data from the vehicle's inertial navigation system (INS). The one or more processors may further be configured to: determine a second attitude of the vehicle at the second epoch based on the determined attitude of the INS. The one or more processors may further be configured to: apply constraints to the determined second attitude of the vehicle to generate an updated second attitude of the vehicle, wherein the constraints restrict changes in one or more aspects of the determined second attitude of the vehicle from the first epoch to the second epoch. The one or more processors may further be configured to: determine an updated attitude of the INS based on the updated second attitude of the vehicle.
[0005] According to this disclosure, an exemplary device for vehicle navigation may include: means for determining a first attitude of a vehicle relative to a reference frame at a first epoch. The device may further include: means for determining the attitude of an inertial navigation system (INS) of the vehicle at a second epoch after the first epoch, based on measurement data from the INS. The device may further include: means for determining a second attitude of the vehicle at the second epoch, based on the determined attitude of the INS. The device may further include: means for applying constraints to the determined second attitude of the vehicle to generate an updated second attitude of the vehicle, wherein the constraints restrict changes in one or more aspects of the determined second attitude of the vehicle from the first epoch to the second epoch. The device may further include: means for determining an updated attitude of the INS based on the updated second attitude of the vehicle.
[0006] According to this disclosure, an exemplary non-transitory computer-readable medium stores instructions for vehicle navigation, the instructions comprising: code for determining a first attitude of the vehicle relative to a reference frame at a first epoch; code for determining the attitude of the inertial navigation system (INS) of the vehicle at a second epoch after the first epoch based on measurement data from the INS; code for determining a second attitude of the vehicle at the second epoch based on the determined attitude of the INS; code for applying constraints to the determined second attitude of the vehicle to generate an updated second attitude of the vehicle, wherein the constraints restrict changes in one or more aspects of the determined second attitude of the vehicle from the first epoch to the second epoch; and code for determining an updated attitude of the INS based on the updated second attitude of the vehicle.
[0007] This invention is not intended to identify key or essential features of the claimed technical subject matter, nor is it intended to be used alone to determine the scope of the claimed technical subject matter. The technical subject matter should be understood by referring to appropriate portions of the entire specification of this disclosure, any or all drawings, and each claim. The foregoing, as well as other features and examples, will be described in more detail below in the following specification, claims, and accompanying drawings.
Implementation Method
[0018] Several illustrative embodiments will now be described with respect to the accompanying drawings, which form a part of this document. While specific embodiments in which one or more forms of this disclosure may be implemented are described below, other embodiments may be used, and various modifications may be made without departing from the scope of this disclosure or the appended claims.
[0019] As described herein, a satellite receiver (such as a Global Navigation Satellite System (GNSS) receiver) may be integrated into a mobile device that includes electronic devices or systems. Such mobile devices may include, for example, consumer, industrial and / or commercial electronic devices, vehicles, assets, ships, and the like. As described herein, the location estimate of the satellite receiver or the mobile device in which the satellite receiver is integrated may be referred to as the location, location estimate, location fix, fix, position, position estimate, or position fix of the satellite receiver or the mobile device. Furthermore, the location estimate may be geodetic, thus providing location coordinates (e.g., latitude and longitude) for the mobile device, which may or may not include an altitude component (e.g., altitude above sea level, altitude above ground elevation, floor elevation, or basement elevation, or depth below ground elevation, floor elevation, or basement elevation). In some embodiments, the location of a satellite receiver and / or a mobile device containing the satellite receiver may also be represented as an area or volume (geographic or municipally defined) within which the satellite receiver is expected to be located with a certain probability or confidence level (e.g., 67%, 95%, etc.). In the description contained herein, unless otherwise indicated, the use of the term "location" may include any variations of these variations. When calculating the location of the satellite receiver, local X, Y, and possibly Z coordinates are calculated, and then, if necessary, the coordinates are transformed from one coordinate system to another.
[0020] An inertial navigation system (INS) is a relative positioning system used to track the position, velocity, and / or orientation of an object relative to a starting point. Specifically, the INS indicates motion relative to the main frame (also referred to as the "main coordinate system"), typically by providing angular velocity and acceleration relative to the axes of the main frame. Such indication of relative motion can be used in vehicle navigation (e.g., position estimation, driver assistance, and / or automation) by dead reckoning (DR). As shown in Figure 1, the orientation of the vehicle frame 110 (the main frame of the vehicle in which the INS is located) relative to the INS frame 120 (the main frame of the INS) can be represented as a rotation matrix (also referred to as a direction cosine matrix or DCM) from the INS frame 120 to the vehicle frame 110, as indicated by arrow 125. This orientation is constant if the INS is immovably fixed to the vehicle or otherwise held in a fixed position relative to the vehicle. The origin of the vehicle frame 110 can be determined to coincide with the vehicle's center of gravity.
[0021] Changes in INS positioning, velocity, and / or orientation are based on measurements provided by the INS's inertial measurement unit (IMU). The IMU is typically implemented as including a gyroscope that measures the rate of rotation about at least one axis (typically, the rate of rotation about each of the three orthogonal axes of the IMU's main frame). Such a gyroscope can be, for example, a microelectromechanical system (MEMS) gyroscope. By way of example, and not limitation, a MEMS gyroscope can be a vibrating mass gyroscope, a vibrating structure gyroscope, a tuning fork gyroscope, a vibrating ring gyroscope, a piezoelectric plate gyroscope, or any combination thereof.
[0022] The IMU may also include an accelerometer that measures acceleration along at least one axis (typically, acceleration along each of the three orthogonal axes of the IMU’s main frame). Such an accelerometer may be, for example, a MEMS accelerometer. By way of example and not limitation, a MEMS accelerometer may be composed of capacitive, variable capacitive, inductive, piezoelectric, or piezoresistive components or any combination thereof.
[0023] IMU measurements are affected by white noise and bias, which may vary over time and temperature. The bias is estimated (e.g., using a Kalman filter) and removed (e.g., subtracted) from the IMU measurements to obtain calibrated measurements of angular rate and acceleration. These calibrated measurements can be used to mechanize positioning, velocity, and device attitude by updating or “propagating” positioning, velocity, and attitude states, for example, at each measurement / estimation period (referred to as an epoch). An epoch may be repeated periodically at the rate of the underlying measurements on which the positioning estimation is based and / or at the rate at which the Kalman filter or other estimation engine is operating. According to some embodiments, this may occur periodically per second. Depending on the desired functionality and / or other factors, epochs in other embodiments may have longer or shorter periods.
[0024] Even bias-corrected IMU measurements can still be contaminated by errors, such as integration, quantization errors, bias estimation errors, and / or noise modeling. To some extent, measurement errors can be limited by applying nonholonomic constraints: for example, a moving vehicle must be within the road surface boundaries; it must be moving forward, not backward; its positioning cannot suddenly slip to one side or up or down. However, in general, measurements from Global Navigation Satellite System (GNSS) receivers can be used to correct sensor biases to a degree sufficient to support navigation continued by the DR.
[0025] GNSS is an absolute positioning system used to indicate the location of a GNSS receiver in space. Examples of GNSS include the US Global Positioning System (GPS), Russia's Global Navigation Satellite System (GLONASS), the European Union's Galileo system, and China's BeiDou system. As shown in Figure 1, the navigation frame 130 used to indicate the location of a GNSS receiver is the World Reference Frame, which can be, for example, the Earth-centered Earth Fixed (ECEF) coordinate system, the East-North-Up (ENU) coordinate system, or the North-East-Down (NED) coordinate system.
[0026] GNSS measurements can be used to correct INS-based attitude and PVT (position, velocity, and time) estimates via sensor fusion. For example, GNSS measurements can be used to correct INS-based attitude, position, and velocity states. However, when GNSS signals are degraded (e.g., by multipath) or otherwise unavailable (e.g., due to satellite unobservability, such as when a vehicle is in a tunnel), uncorrected INS errors accumulate and cause attitude drift over time. Such attitude errors can lead to poor DR performance (e.g., position, velocity, and / or heading errors). For example, as a consequence of attitude drift, gravity components (such as those measured by the IMU's accelerometers) may begin to leak into other axes, thus contaminating velocity and / or position estimates.
[0027] This embodiment addresses these and other issues by applying constraints to modify the calculated roll, pitch, and / or yaw angles of the vehicle attitude based on known road conditions and / or other information, thereby helping to mitigate attitude drift. Improved DR performance may be desired during periods of GNSS degradation and / or unavailability.
[0028] Several illustrative configurations will now be described with respect to the accompanying drawings that form part of this document. Although specific configurations in which one or more of the present disclosure may be implemented are described below, other configurations may be used, and various modifications may be made without departing from the scope of the present disclosure or the spirit of the appended claims.
[0029] Although the specific examples discussed herein are primarily concerned with passenger cars, it should be understood that the principles, methods and apparatus disclosed are more generally concerned with motorized road vehicles, including freight vehicles (e.g., trucks, tractor-trailers), motorcycles and public transport vehicles (e.g., buses), and also with other ground vehicles (including, for example, agricultural vehicles), and the use of such principles in such contexts is specifically conceived and disclosed herein.
[0030] Figure 2A shows a flowchart of a method 200 for vehicle navigation according to a general configuration, which includes operations 210, 220, 230, 240, and 250. Components for performing one or more of the operations of method 200 may include, for example, software and / or hardware components of a computer system that can be integrated into a vehicle or other mobile device. Illustrative hardware and / or software components of such a computer system are illustrated in Figure 6 and described below.
[0031] At operation 210, method 200 includes: determining a first attitude of the vehicle relative to a reference frame at a first epoch. As illustrated in Figure 1, the first reference frame may include, for example, an ECEF, ENU, or NED coordinate system. Similarly, the rate or periodicity of the epoch may vary depending on the desired functionality. In one instance, the second epoch is one second (1 s) after the first epoch (e.g., in GNSS time), but in other implementations, the time interval between the first and second epochs may be longer (e.g., 2 s, 2.5 s, 3 s, 4 s, or 5 s, etc.) or shorter (e.g., 100 ms, 50 ms, 20 ms, or 10 ms, etc.). The length of time between consecutive epochs may be determined, for example, by the frequency at which the Kalman filter used for IMU bias estimation is being operated. In some cases, the length of time between consecutive epochs may be as short as 5 ms (e.g., for a Kalman filter frequency of 200 Hz), and / or may vary over time.
[0032] Operation 210 can be implemented to determine the first attitude of the vehicle based on the attitude of the vehicle's INS relative to the reference frame at the first epoch. For example, operation 210 can be implemented to determine the first attitude of the vehicle relative to the navigation frame at the first epoch () according to the following matrix multiplication expression (as shown by arrow 135 in Figure 1):
[0033]
[0034] wherein, it indicates the direction of the vehicle’s main frame relative to the INS frame, as described above (for example, as indicated by arrow 125 in Figure 1), and indicates the attitude of the INS relative to the reference (navigation) frame at the first epoch, as shown by arrow 140 in Figure 1.
[0035] At operation 220, the attitude (e.g., attitude relative to a reference frame) of the INS at a second epoch after the first epoch can be determined based on measurement data from the INS of the vehicle. Operation 220 can be implemented to calculate the attitude of the INS at the second epoch based on the attitude of the INS at the first epoch. For example, operation 220 can be implemented to determine the attitude of the INS at the second epoch by propagating the attitude of the INS at the first epoch () according to the following matrix multiplication expression:
[0036]
[0037] The relative change in the attitude of the INS from the first epoch to the second epoch is indicated by measurement data and is a transpose of the relative.
[0038] Measurement data from the INS may be based on data from at least one gyroscope of the INS. For example, the measurement data may indicate the rotation rate about at least one axis of the gyroscope of the INS. In one example, the rotation matrix is obtained by converting a vector into DCM form, where the angular velocity vector represents the rotation rate about each of the three axes of the INS body frame from the first epoch to the second epoch.
[0039] As an alternative to the DCM form, operation 220 can be implemented to determine the attitude of the INS in quaternion form at the second epoch. For example, operation 220 can be implemented to determine the attitude of the INS at the second epoch by propagating the attitude of the INS at the first epoch () according to the following quaternion multiplication expression:
[0040]
[0041] The state transition matrix can be obtained from the vector and the sampling period (i.e., the time between the first epoch and the second epoch), as shown below:
[0042] .
[0043] Propagating the INS pose in quaternion form instead of DCM form may be advantageous, for example, in terms of reducing computational complexity, although it may still be desirable to convert the propagated INS pose to DCM form in order to calculate the vehicle pose. In a further example, operation 220 may be implemented to calculate the pose of the INS in Rodrigues vector form at the second epoch. The conversion between these various forms (e.g., DCM, quaternion, Euler angles, Rodrigues vector form) of pose representation is well known in the art.
[0044] Based on the determined attitude of the INS, operation 230 includes: determining the second attitude of the vehicle at the second epoch. For example, operation 230 can be implemented to calculate the attitude of the INS relative to the reference frame at the second epoch () according to the following matrix multiplication expression:
[0045]
[0046] wherein (indicating the attitude of the INS relative to the reference (navigation) frame at the second epoch) is the transpose of the pair.
[0047] At operation 240, the functionality includes: applying constraints to the determined second attitude of the vehicle to produce an updated second attitude of the vehicle, wherein the constraints restrict changes in one or more aspects of the determined attitude of the vehicle from the first epoch to the second epoch. For example, operation 240 may be implemented to constrain rotation of the determined vehicle attitude about a corresponding axis of the vehicle body frame from the first epoch to the second epoch.
[0048] Figure 2B shows the correspondence between the X, Y, and Z axes of the coordinate system and the motion defined by rotation about each of these axes. As shown in Figure 2B, roll 260 is defined as rotation about the X axis, pitch 270 is defined as rotation about the Y axis, and yaw 280 is defined as rotation about the Z axis. Figure 4A illustrates different rotations 410-1, 410-2, and 410-3 (i.e., different pitch angles) about the Y axis of the passenger car in a side view, Figure 4B illustrates different rotations 420-1, 420-2, and 420-3 (i.e., different yaw angles) about the Z axis of the passenger car in a top view, and Figure 4C illustrates different rotations 430-1, 430-2, and 430-3 (i.e., different roll angles) about the X axis of the vehicle's main frame as shown in Figure 1.
[0049] Operation 240 can be implemented to apply constraints by modifying one or more of the roll, pitch, and yaw angles of the determined vehicle attitude at the second epoch. For example, operation 240 can be implemented to constrain the change of one or more of the roll, pitch, and yaw angles of the determined vehicle attitude from the first epoch to the second epoch. Due to the nature of the road design, it can be assumed that a vehicle that is not turning will not experience a change in roll angle. In cases where the vehicle is not turning from the first epoch to the second epoch (e.g., where the change in the yaw angle of the determined vehicle attitude from the first epoch to the second epoch is less than a threshold value), it may be desirable to constrain the determined vehicle attitude by constraining the change in roll angle from the first epoch to the second epoch. The implementation of operation 240 may include the following sequence of operations: 1) converting the vehicle attitude at the determined first epoch into roll angle, pitch angle, and yaw angle (also known as "Euler angle"), and converting the vehicle attitude at the determined second epoch into roll angle, pitch angle, and yaw angle; 2) constraining the roll angle of the vehicle attitude at the second epoch if the condition of the yaw angle of the vehicle attitude is met (e.g., if the absolute change of the yaw angle between the first and second epochs is less than (or does not exceed) a threshold value); and 3) if the roll angle of the vehicle attitude at the second epoch is constrained, converting the vehicle attitude at the second epoch (i.e., where the roll angle has been constrained) back to, for example, DCM form.
[0050] Alternatively or additionally, operation 240 may be implemented to apply constraints based on other information to the determined second attitude of the vehicle. For example, it may be assumed that the change in the vehicle's pitch angle will be equal to the change in the road surface's tilt angle. In such a case, operation 240 is implemented to constrain the change in the vehicle's pitch angle from the first epoch to the second epoch (e.g., equal to the indicated tilt angle) using map data indicating the road surface's tilt angle.
[0051] Based on the updated second pose of the vehicle, operation 250 includes: determining the updated pose of the INS. For example, operation 250 can be implemented to determine the updated pose of the INS relative to the reference frame at the second epoch () according to the following matrix multiplication expression:
[0052]
[0053] wherein the transpose of the pair, and the apostrophe indicates the transpose operation.
[0054] Method 200 can be iterated at each consecutive epoch during the dead reckoning period. Although GNSS-INS fusion for IMU sensor bias correction is discussed herein as background for dead reckoning, other sensor measurements can also be used for IMU sensor bias correction. For example, in addition to or as an alternative to GNSS measurements, sensor fusion can be performed using measurements from one or more sonar sensors, radar sensors, light sensors, and / or cameras (e.g., visible light and / or infrared). In one instance, measurements from one or more cameras are used together with INS measurements to determine vehicle positioning and orientation by visual inertial odometry. When measurements from such other sensors are degraded or unavailable (e.g., no traceable visual features on a snowy road), dead reckoning can be activated according to attitude constraint principles as described herein. For example, an example of method 200 can be performed in response to such activation of dead reckoning.
[0055] Depending on the desired functionality, method 200 may include one or more additional functions. For example, according to some embodiments, method 200 may further include providing an updated attitude of the INS. According to some embodiments, providing an updated attitude of the INS provides information indicating the updated attitude to a software application, operating system, user interface, vehicle system, or remote device, or a combination thereof.
[0056] Figure 3A shows a block diagram of a device 310 for vehicle navigation according to a general configuration, the device 310 including a processor 320 coupled to an inertial navigation system (INS) 330. The inertial navigation system 330 may include a gyroscope for measuring the rate of rotation about at least one axis. If so, the gyroscope may be, for example, a microelectromechanical system (MEMS) gyroscope. By way of example, and not limitation, the MEMS gyroscope may be a vibrating mass gyroscope, a vibrating structure gyroscope, a tuning fork gyroscope, a vibrating ring gyroscope, a piezoelectric plate gyroscope, or any combination thereof. The inertial navigation system 330 may also include an accelerometer for measuring acceleration along at least one axis. If so, the accelerometer may be, for example, a MEMS accelerometer. By way of example, and not limitation, the MEMS accelerometer may be composed of capacitive, variable capacitive, inductive, piezoelectric, or piezoresistive components, or any combination thereof. As described herein, the gyroscope and / or accelerometer of INS 330 may be part of the IMU of INS 330. Processor 320 (e.g., one or more processors) is configured to execute computer-executable instructions to calculate a first attitude of the vehicle relative to a reference frame at a first epoch; calculate the attitude of INS 330 at a second epoch after the first epoch based on measurements from INS 330; calculate a second attitude of the vehicle at the second epoch based on the calculated attitude of INS 330 and the calculated first attitude of the vehicle; apply constraints to the calculated second attitude of the vehicle to generate an updated calculated second attitude of the vehicle; and calculate an updated attitude of INS 330 based on the updated calculated attitude of the vehicle. INS 330 may be implemented on one or more substrates, and processor 320 may be implemented at least partially on the same substrate as at least a portion of INS 330 and / or on another substrate. For example, the calculation (or "propagation") of the attitude of INS 330 may be performed by a portion of processor 320, which is implemented on the same substrate as at least a portion of INS 330.
[0057] Figure 3B shows a block diagram of an implementation 340 of the device 310, which includes an implementation 350 of the INS 330, wherein the INS 350 includes an IMU 360 (e.g., an example of an IMU as described herein). The inertial measurement unit 360 may be implemented to include a gyroscope that measures the rate of rotation about at least one axis (typically, the rate of rotation about each of the three orthogonal axes of the main frame of the IMU). Such a gyroscope may be, for example, a microelectromechanical system (MEMS) gyroscope. By way of example and not limitation, a MEMS gyroscope may be a vibrating mass gyroscope, a vibrating structure gyroscope, a tuning fork gyroscope, a vibrating ring gyroscope, a piezoelectric plate gyroscope, or any combination thereof. The inertial measurement unit 360 may also include an accelerometer that measures acceleration along at least one axis (typically, acceleration along each of the three orthogonal axes of the main frame of the IMU). Such an accelerometer may be, for example, a MEMS accelerometer. By way of example rather than limitation, a MEMS accelerometer may be composed of capacitive, variable capacitive, inductive, piezoelectric, or piezoresistive components, or any combination thereof.
[0058] Appliance 310 (e.g., appliance 340) may be installed in a vehicle that includes one or more other sensors that support vehicle automation. Figure 5 is a perspective view of such a vehicle 500, including an example of INS 330 (not shown) (which may be an example of 350 as described herein). Vehicle 500 may include one or more cameras, such as a camera 506 mounted on a rearview mirror, a camera mounted on the front fender (not shown), a camera mounted on a side mirror (not shown), and a rear camera (not shown, but typically located in the trunk, tailgate, or rear bumper). Vehicle 500 may also have a laser 504 for detecting objects and measuring the distance to those objects; the laser 504 is typically mounted on the roof, however, if there are multiple laser units 504, they can be oriented around the front, rear, and sides of the vehicle. Vehicle 500 may have various other location-related systems, such as a GNSS receiver (typically located in a shark fin unit at the rear of the roof, as indicated), various wireless communication interfaces (such as WAN, wireless local area network (WLAN), vehicle-to-person and service connection (V2X); typically (but not necessarily) located in a shark fin on the roof of the vehicle), radar 508 (typically located in the front bumper), and sonar 510 (typically located on both sides of the vehicle, if present). Various wheel sensors 512 (e.g., wheel tread sensors) and drivetrain sensors, such as tire pressure sensors, accelerometers, gyroscopes, and wheel rotation detection and / or counters, may also be present. In one embodiment, distance measurements and relative positions determined by various sensors, such as LiDAR, radar, cameras, GNSS, and sonar, can be combined with vehicle size and shape information, as well as information about sensor positions, to determine the distances and relative positions between different vehicle surfaces. This causes the distance or vector from a sensor to another vehicle or between two different sensors (e.g., two GNSS receivers) to increase incrementally, taking into account the positioning of the sensors on each vehicle. Therefore, it may be desirable to modify the precise GNSS distance and vector between two GNSS receivers based on, for example, the relative positions of various vehicle surfaces with respect to the GNSS receivers. It should be understood that this list is not intended to be limiting, and Figure 5 is intended to provide illustrative positions of various sensors in an embodiment of a vehicle including an example of appliance 310 (e.g., an example of appliance 340).
[0059] FIG6 illustrates an exemplary computer system 600 that may be used with and / or incorporated into one or more electronic components of appliance 310 and / or 340 (e.g., INS 330 (or 350), processor 320). In some embodiments, computer system 600 is deployed in a vehicle (e.g., vehicle 500). It should be noted that FIG6 is intended only to provide a general illustration of various components, and any or all of these components may be used as appropriate. Therefore, FIG6 is broadly illustrated how individual system elements can be implemented in a relatively separate or relatively more integrated manner.
[0060] As depicted in Figure 6, computer system 600 may include hardware components communicatively coupled via bus 605 (or other wired and / or wireless communication infrastructure, as appropriate). The hardware components may include one or more processors 610, which may include, but are not limited to, one or more general-purpose processors, one or more special-purpose processors such as digital signal processors (DSPs), graphics accelerator processors, application-specific integrated circuits (ASICs), and / or similar devices. Processor 610 may perform vehicle navigation processing, including, for example, estimating positioning, speed, and / or attitude. Processor 320 may be implemented wholly or partially within processor 610.
[0061] The computer system 600 may include one or more input devices 615, which may include, but are not limited to, a touch screen, keyboard, touchpad, camera, microphone and / or other user input devices, map data (e.g., map data 619) and / or similar; and one or more output devices 627, which may include, but are not limited to, display devices, speakers and / or similar.
[0062] The computer system 600 may further include a wireless communication interface 630, which may include, but is not limited to, a network card, an infrared communication device, a wireless communication interface 633, and / or a chipset (such as a Bluetooth® device, an IEEE 802.11 device, or a cellular communication facility) and / or similar, enabling the computer system 600 to communicate with external computer systems or electronic devices. Communication may be performed via one or more wireless communication antennas (not shown) that transmit and / or receive wireless signals.
[0063] The input device 615 may further include one or more sensors. Such sensors may include, but are not limited to, one or more of the following: INS 616 (e.g., INS 330 and / or INS 350 (including, for example, an accelerometer, a gyroscope and / or an IMU (e.g., IMU 360))), radar 608 (e.g., radar 508), camera 606 (e.g., camera 506), magnetometer, light source 604 (e.g., light source unit 504), altimeter, microphone, ultrasonic sensor, light sensor, wheel sensor 612 (e.g., wheel sensor 512) and similar, some of which may be used to complement and / or facilitate the navigation-related processing described herein.
[0064] The computer system 600 may further include a GNSS receiver 602 (e.g., included as part of receiver 502 in FIG. 5), operable to receive signals from one or more GNSS satellites using an antenna. The signals can be used to supplement and / or incorporate techniques described herein (e.g., to correct INS states, such as positioning, velocity, and / or attitude states). In some embodiments, the GNSS signals can be used to determine the geographic location of the computer system 600, for example, for vehicle navigation.
[0065] The computer system 600 may further include memory 635 (e.g., short-term working memory) and one or more storage devices 625 (e.g., long-term data storage) and / or communicate with them. Memory 635 and / or one or more storage devices 625 may include, but are not limited to, local and / or network-accessible storage, disk drives, disk arrays, optical storage devices, solid-state storage devices, such as random access memory (“RAM”) and / or read-only memory (“ROM”), which may be programmable, flash-updatable, and / or similar. Such storage devices may be configured to perform any suitable data storage, including but not limited to various file systems, database structures, and / or similar. In some embodiments, memory 635 may store a codebook containing parameters for transmitting waveforms.
[0066] Memory 635 may contain a non-transitory computer-readable medium storing instructions executable by one or more processors (e.g., processor 610) of computer system 600. Such instructions may be stored as program code, such as operating system 640, device driver, executable library, or other application 645. The instructions stored in memory 635 may be configured to cause the processor to perform the radar-related processing described herein. By way of example only, one or more programs described with respect to method 200 of FIG. 2A discussed above may be implemented as code and / or instructions executable by processor 610. Then, in one configuration, such code and / or instructions may be used to configure and / or adapt a general-purpose computer (or other computing device) to perform one or more operations according to the techniques described herein.
[0067] It will be apparent to those skilled in the art that substantial changes can be made to suit specific requirements. For example, custom hardware may be used, and / or specific elements may be implemented in hardware, software (including portable software, such as small applications, etc.) or both. Furthermore, connections to other computing devices, such as network input / output devices, may be employed.
[0068] Unless explicitly limited by its context, the term “signal” is used herein to indicate any of its general meanings, including the state of a memory location (or set of memory locations) represented on a wire, bus, or other transmission medium. Unless explicitly limited by its context, the term “generate” is used herein to indicate any of its general meanings, such as calculation or otherwise generating. Unless explicitly limited by its context, the term “calculate” is used herein to indicate any of its general meanings, such as calculating, evaluating, estimating, and / or selecting from complex values. Unless explicitly limited by its context, the term “obtain” is used herein to indicate any of its general meanings, such as calculating, deriving, receiving (e.g., from an external device), and / or retrieving (e.g., from an array of storage elements). Unless explicitly limited by its context, the term “select” is used herein to indicate any of its general meanings, such as identifying, indicating, applying, and / or using at least one and less than all of two or more sets. Unless explicitly limited by its context, the term “determine” is used to indicate any of its general meanings, such as deciding, establishing, determining, calculating, selecting, and / or evaluating. Where the term “comprising” is used in this specification and the claims, it does not exclude other elements or operations. The term “based on” (as in “A is based on B”) is used to indicate any of its general meanings, including (i) “derived from” (e.g., “B is a precursor to A”), (ii) “at least based on” (e.g., “A is at least based on B”), and (iii) “equal to” (e.g., “A is equal to B”) if applicable in the particular context. Similarly, the term “in response to” is used to indicate any of its general meanings, including “at least in response to”. Unless otherwise indicated, the terms “at least one of A, B, and C,” “one or more of A, B, and C,” “at least one of A, B, and C,” and “one or more of A, B, and C” indicate “A and / or B and / or C.” Unless otherwise instructed, “each of A, B and C” and “each of A, B and C” refer to “A, B and C”.
[0069] Unless otherwise indicated, any disclosure of the operation of an apparatus having a particular characteristic is also expressly intended to disclose a method having a similar characteristic (and vice versa), and any disclosure of the operation of an apparatus according to a particular configuration is also expressly intended to disclose a method according to a similar configuration (and vice versa). The term “configuration” may be used with reference to a method, apparatus, and / or system, as indicated by its specific context. Unless otherwise indicated by its specific context, the terms “method,” “process,” “procedure,” and “technique” are used generally and interchangeably. A “task” having multiple subtasks is also a method. The terms “apparatus” and “device” are also used generally and interchangeably, unless otherwise indicated by its specific context. The terms “element” and “module” are typically used to indicate a part of a larger configuration. Unless expressly limited by its context, the term “system” is used herein to indicate any of its general meanings, including “a set of elements interacting for a common purpose.”
[0070] Unless initially introduced by a definite article, ordinal terms used to modify claim elements (e.g., “first,” “second,” “third,” etc.) do not themselves indicate any priority or order of claim elements relative to another claim element, but merely distinguish the claimed element from another claimed element with the same name (except for the use of ordinal terms). Unless explicitly limited by its context, each of the terms “plural” and “set” is used herein to indicate an integer quantity greater than one.
[0071] Various elements of the implements of the apparatus or system disclosed herein may be embodied in any combination of hardware and software and / or firmware, which is considered suitable for the intended application. For example, such elements may be manufactured as electronic and / or optical devices, which may reside, for example, on the same wafer or between two or more wafers in a wafer set. An example of such a device is a fixed or programmable array of logic elements, such as transistors or logic gates, and any of such elements may be implemented as one or more such arrays. Any two or more, or even all, of such elements may be implemented within the same one or more arrays. One or more such arrays may be implemented within one or more wafers (e.g., within a wafer set comprising two or more wafers).
[0072] The processor or other processing component disclosed herein may be manufactured as one or more electronic and / or optical devices, such as residing on the same wafer or within two or more wafers of a wafer set. An example of such a device is a fixed-programmable array of logic elements, such as transistors or logic gates, and any of these elements may be implemented as one or more such arrays. Such one or more arrays may be implemented within one or more wafers (e.g., within a wafer set comprising two or more wafers). Examples of such arrays include fixed or programmable arrays of logic elements, such as microprocessors, embedded processors, silicon intellectual property (IP) cores, DSPs (digital signal processors), FPGAs (field-programmable gate arrays), ASSPs (application-specific standard products), and ASICs (application-specific integrated circuits). The processor or other processing component disclosed herein may also be embodied as one or more computers (e.g., including one or more arrays of one or more instruction sets or sequences) or other processors. The processor described herein may be used to perform operations not directly related to the implementation of method 200 (or another method disclosed with reference to the operation of the apparatus or system described herein), or to execute other sets of instructions not directly related to the implementation of method 200, such as operations related to another operation of the device or system in which the processor is embedded. It may also perform a portion of the method disclosed herein under the control of one or more other processors.
[0073] Each operation of the methods disclosed herein may be directly embodied in hardware, a software module executed by a processor, or a combination of both. In a typical application of the implementation of the methods disclosed herein, an array of logic elements (e.g., logic gates) is configured to perform one, more, or even all of the various operations of the method. One or more (possibly all) operations may also be implemented as code (e.g., one or more sets of instructions) embodied in a computer program product (e.g., one or more data storage media, such as a disk, flash memory, or other non-volatile memory card, semiconductor memory chip, etc.), which may be read and / or executed by a machine (e.g., a computer) including an array of logic elements (e.g., a processor, microprocessor, microcontroller, or other finite state machine). The operations of the implementation of the methods disclosed herein may also be performed by more than one such array or machine.
[0074] In one or more exemplary embodiments, the operations described herein may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, such operations may be stored as one or more instructions or code on or transmitted via a computer-readable medium. The term “computer-readable medium” includes both computer-readable storage media and communication (e.g., transmission) media. By way of example and not limitation, a computer-readable storage medium may comprise an array of storage elements, such as semiconductor memory (which may include, but is not limited to, dynamic or static RAM, ROM, electrically erasable programmable read-only memory (EEPROM) and / or flash RAM) or ferroelectric, magnetoresistive, bidirectional, polymer, or phase-change memory; compact optical disc read-only memory (CD-ROM) or other optical disc storage; and / or magnetic disk storage or other magnetic storage devices. Such a storage medium may store information in the form of instructions or data structures accessible by a computer. Communication media can include any medium that can be used to carry desired program code in the form of instructions or data structures and is accessible to a computer, including any medium that facilitates the transfer of computer programs from one place to another. Additionally, any connection is appropriately referred to as computer-readable media. For example, if software is transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technology (such as infrared, radio, and / or microwave), then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technology (such as infrared, radio, and / or microwave) is included in the definition of media. As used herein, magnetic disks and optical disks include compact discs (CDs), laser discs, optical discs, digital versatile discs (DVDs), floppy disks, and Blu-ray discs™ (Blu-ray Disc Association, Universal, California), where magnetic disks typically magnetically copy data, while optical disks optically copy data using lasers. The combination of the above should also be included within the scope of computer-readable media.
[0075] In one instance, the non-transitory computer-readable storage medium contains code that, when executed by at least one processor, causes at least one processor to perform a method of vehicle navigation as described herein.
[0076] The foregoing embodiments are provided to enable those skilled in the art to implement or use the disclosed implementations. Various modifications to these implementations will readily be apparent to those skilled in the art, and the principles defined herein can be applied to other implementations without departing from the scope of this disclosure. Therefore, this disclosure is not intended to be limited to the implementations shown herein, but should be given the broadest possible scope consistent with the principles and novel features defined by the following claims.
[0077] In view of this embodiment, embodiments may include combinations of different features. Examples of implementation are described in the following numbered clauses: Clause 1. A method for vehicle navigation, the method comprising: determining a first attitude of a vehicle relative to a reference frame at a first epoch; determining the attitude of an inertial navigation system (INS) of the vehicle at a second epoch after the first epoch based on measurement data from the INS; determining a second attitude of the vehicle at the second epoch based on the determined attitude of the INS; applying constraints to the determined second attitude of the vehicle to produce an updated second attitude of the vehicle, wherein the constraints restrict the change of one or more aspects of the determined second attitude of the vehicle from the first epoch to the second epoch; and determining an updated attitude of the INS based on the updated second attitude of the vehicle. Clause 2. The method of Clause 1, wherein the determination of the first attitude of the vehicle is based at least in part on the attitude of the INS relative to the reference frame at the first epoch, or the orientation of the main frame of the INS relative to the main frame of the vehicle, or a combination thereof. Clause 3. According to any of the provisions of Clauses 1-2, the measurement data indicates the rate of rotation about at least one axis of the gyroscope of the INS. Clause 4. According to any of the provisions of Clauses 1-3, the attitude of the INS at the second epoch is relative to the reference frame. Clause 5. According to any of the provisions of Clauses 1-4, the attitude of the INS at the second epoch is based on the attitude of the INS at the first epoch. Clause 6. According to any of the provisions of Clauses 1-5, applying the constraint includes: detecting the yaw angle of the vehicle's attitude. Clause 7. According to any of the provisions of Clauses 1-6, applying the constraint includes: modifying the roll angle of the determined second attitude of the vehicle. Clause 8. According to any of the provisions of Clauses 1-7, the method is performed during the period of dead reckoning for the vehicle. Clause 9. According to any of the provisions of Clauses 1-8, further comprising: providing the updated attitude of the INS. Clause 10. According to the method in Clause 9, providing the updated attitude of the INS includes: providing information indicating the updated attitude to a software application, operating system, user interface, vehicle system, or remote device, or a combination thereof. Clause 11.An apparatus for vehicle navigation, the apparatus comprising: an inertial navigation system (INS); memory; and one or more processors communicatively coupled to the INS and the memory, wherein the one or more processors are configured to: determine a first attitude of a vehicle relative to a reference frame at a first epoch; determine the attitude of the INS at a second epoch after the first epoch based on measurements from the inertial navigation system (INS) of the vehicle; determine a second attitude of the vehicle at the second epoch based on the determined attitude of the INS; apply constraints to the determined second attitude of the vehicle to generate an updated second attitude of the vehicle, wherein the constraints restrict changes in one or more aspects of the determined second attitude of the vehicle from the first epoch to the second epoch; and determine an updated attitude of the INS based on the updated second attitude of the vehicle. Clause 12. An apparatus as described in Clause 11, wherein the one or more processors are configured to determine the first attitude of the vehicle based at least in part on: the attitude of the INS relative to the reference frame at the first epoch, or the orientation of the main frame of the INS relative to the main frame of the vehicle, or a combination thereof. Clause 13. An apparatus as described in any of Clauses 11-12, wherein the INS is configured to include in the measurement data the rotational rate about at least one axis of the gyroscope of the INS. Clause 14. An apparatus as described in any of Clauses 11-13, wherein, in order to determine the attitude of the INS at the second epoch, the one or more processors are configured to determine the attitude relative to the reference frame. Clause 15. An apparatus as described in any of Clauses 11-14, wherein the one or more processors are configured to determine the attitude of the INS at the second epoch based on the attitude of the INS at the first epoch. Clause 16. An apparatus as described in any of Clauses 11-15, wherein, in order to apply the constraint, the one or more processors are configured to detect the condition of the yaw angle of the vehicle's attitude. Clause 17. An apparatus as described in any of Clauses 11-16, wherein, in order to apply the constraint, the one or more processors are configured to modify the roll angle of the determined second attitude of the vehicle. Clause 18. As in any of the provisions of Clauses 11-17, wherein the one or more processors are configured to: determine the updated attitude of the INS during a period of dead reckoning for the vehicle. Clause 19. As in any of the provisions of Clauses 11-18, wherein the one or more processors are further configured to: provide the updated attitude of the INS. Clause 20. As in the provision of Clause 19, wherein, in order to provide the updated attitude of the INS, the one or more processors are configured to: provide information indicating the updated attitude to a software application, operating system, user interface, vehicle system, or remote device, or a combination thereof. Clause 21.An apparatus for vehicle navigation, comprising: components for determining a first attitude of a vehicle relative to a reference frame at a first epoch; components for determining the attitude of an inertial navigation system (INS) of the vehicle at a second epoch after the first epoch, based on measurements from the INS; components for determining a second attitude of the vehicle at the second epoch based on the determined attitude of the INS; components for applying constraints to the determined second attitude of the vehicle to produce an updated second attitude of the vehicle, wherein the constraints restrict changes in one or more aspects of the determined second attitude of the vehicle from the first epoch to the second epoch; and components for determining an updated attitude of the INS based on the updated second attitude of the vehicle. Clause 22. The apparatus of Clause 21, wherein the components for determining the first attitude of the vehicle include components for making the determination of the first attitude of the vehicle at least in part based on: the attitude of the INS relative to the reference frame at the first epoch, or the orientation of the main frame of the INS relative to the main frame of the vehicle, or a combination thereof. Clause 23. The apparatus of any of Clauses 21-22, wherein the component for determining the attitude of the INS at the second epoch comprises: a component for determining the attitude relative to the reference frame. Clause 24. The apparatus of any of Clauses 21-23, wherein the component for determining the attitude of the INS at the second epoch comprises: a component for making the determination of the attitude of the INS at the second epoch based on the attitude of the INS at the first epoch. Clause 25. The apparatus of any of Clauses 21-24, wherein the component for applying the constraint comprises: a component for detecting the condition of the yaw angle of the vehicle's attitude. Clause 26. The apparatus of any of Clauses 21-25, wherein the component for applying the constraint comprises: a component for modifying the roll angle of the determined second attitude of the vehicle. Clause 27. The apparatus of any of Clauses 21-26, further comprising: a component for providing the updated attitude of the INS. Clause 28. As in Clause 27, the component for providing the updated attitude of the INS includes: a component for providing data indicating the updated attitude to a software application, operating system, user interface, vehicle system, or remote device, or a combination thereof. Clause 29.A non-transitory computer-readable medium storing instructions for vehicle navigation, the instructions comprising: code for determining a first attitude of a vehicle relative to a reference frame at a first epoch; code for determining the attitude of an inertial navigation system (INS) of the vehicle at a second epoch after the first epoch, based on measurements from the INS; code for determining a second attitude of the vehicle at the second epoch based on the determined attitude of the INS; code for applying constraints to the determined second attitude of the vehicle to produce an updated second attitude of the vehicle, wherein the applied constraints restrict changes in one or more aspects of the determined second attitude of the vehicle from the first epoch to the second epoch; and code for determining an updated attitude of the INS based on the updated second attitude of the vehicle. Clause 30. A non-transitory computer-readable medium as in Clause 29, wherein the code for determining the first attitude of the vehicle comprises code for determining the first attitude of the vehicle based at least in part on: the attitude of the INS relative to the reference frame at the first epoch, or the orientation of the main frame of the INS relative to the main frame of the vehicle, or a combination thereof. [Simplified Explanation of the Diagram]
[0008] Various forms of the present disclosure are illustrated by way of example. In the accompanying drawings, similar symbols indicate similar elements.
[0009] Figure 1 shows an example of the relationship between the INS main frame, the vehicle main frame, and the reference (navigation) frame.
[0010] Figure 2A shows a flowchart of a method 200 for vehicle navigation based on a general configuration.
[0011] Figure 2B shows the correspondence between the X, Y and Z axes of the coordinate system and the rotations about each of these axes.
[0012] Figure 3A shows a block diagram of a device 310 for vehicle navigation according to a general configuration.
[0013] Figure 3B shows a block diagram of the implementation of the device in Figure 3A, including the implementation of the inertial navigation system.
[0014] Figures 4A-4C show passenger cars rotating at different angles around different axes.
[0015] Figure 5 is a perspective view of the vehicle, which includes the implementation of the device in Figure 3A.
[0016] Figure 6 illustrates an exemplary computer system in which one or more embodiments may be implemented.
[0017] According to certain exemplary implementations, similar symbols in various diagrams indicate similar elements. Furthermore, multiple instances of an element can be indicated by following a letter or hyphen after a first number for the element, and then a second number. For example, multiple instances of element 110 can be indicated as 110-1, 110-2, 110-3, etc., or 110a, 110b, 110c, etc. When only the first number is used to refer to such an element, it should be understood that any instance of that element (e.g., element 110 in the previous examples would refer to elements 110-1, 110-2, and 110-3, or elements 110a, 110b, and 110c).
Claims
1. A method for vehicle navigation, the method comprising: determining a first attitude of a vehicle relative to a reference frame at a first epoch; determining the attitude of an inertial navigation system (INS) of the vehicle at a second epoch after the first epoch, based on measurement data from the INS; determining a second attitude of the vehicle at the second epoch based on the determined attitude of the INS at the second epoch; and applying constraints to the determined second attitude of the vehicle to generate an updated second attitude of the vehicle, wherein... The constraint restricts the change of one or more aspects of the vehicle's second attitude from the first epoch to the second epoch; and based on the updated second attitude of the vehicle, the updated attitude of the INS is determined.
2. According to the method of request item 1, where, The determination of the first attitude of the vehicle is based at least in part on the following: the attitude of the INS relative to the reference frame at the first epoch, or the orientation of the main frame of the INS relative to the main frame of the vehicle at the first epoch, or a combination thereof.
3. According to the method of request item 1, where, The measurement data indicates the rate of rotation about at least one axis of the INS gyroscope.
4. According to the method of request item 1, where, The pose of the INS at the second epoch is relative to the reference frame.
5. According to the method of request item 1, where, The pose of the INS at the second epoch is based on the pose of the INS at the first epoch.
6. According to the method of request item 1, where, The application of this constraint includes: the condition for detecting the yaw angle of the second attitude of the vehicle determined by the detection.
7. According to the method of request item 1, where, The constraint applied includes modifying the roll angle of the determined second attitude of the vehicle.
8. According to the method of request item 1, where, This method is performed during the period in which dead reckoning for the vehicle is conducted.
9. According to the method of request item 1, it further includes: providing the updated pose of the INS.
10. According to the method of request item 9, where, Providing the updated status of the INS includes: providing information indicating the updated status of the INS to software applications, operating systems, user interfaces, vehicle systems, or remote devices, or combinations thereof.
11. An apparatus for vehicle navigation, the apparatus comprising: an inertial navigation system (INS); memory; and one or more processors communicatively coupled to the INS and the memory, wherein, The one or more processors are configured to perform the following operations: determine a first attitude of the vehicle relative to a reference frame at a first epoch; determine the attitude of the INS at a second epoch after the first epoch based on measurements from the INS; determine a second attitude of the vehicle at the second epoch based on the determined attitude of the INS at the second epoch; apply constraints to the determined second attitude of the vehicle to generate an updated second attitude of the vehicle, wherein the constraints restrict the change of one or more aspects of the determined second attitude of the vehicle from the first epoch to the second epoch; and determine an updated attitude of the INS based on the updated second attitude of the vehicle.
12. The apparatus of claim 11, wherein, The one or more processors are configured to determine the first attitude of the vehicle based at least in part on the attitude of the INS relative to the reference frame at the first epoch, or the orientation of the main frame of the INS relative to the main frame of the vehicle at the first epoch, or a combination thereof.
13. The apparatus of claim 11, wherein, The INS is configured to include the rotational rate of at least one axis of the gyroscope in the measurement data.
14. The apparatus of claim 11, wherein, In order to determine the orientation of the INS at the second epoch, the one or more processors are configured to determine the orientation relative to the reference frame.
15. The apparatus of claim 11, wherein, The one or more processors are configured to determine the attitude of the INS at the second epoch based on the attitude of the INS at the first epoch.
16. The apparatus of claim 11, wherein, In order to apply the constraint, the one or more processors are configured to: detect the condition of the yaw angle of the determined second attitude of the vehicle.
17. The apparatus of claim 11, wherein, In order to apply the constraint, the one or more processors are configured to modify the roll angle of the determined second attitude of the vehicle.
18. The apparatus of claim 11, wherein, The one or more processors are configured to determine the updated attitude of the INS during the dead reckoning period for the vehicle.
19. The apparatus of claim 11, wherein, The one or more processors are further configured to provide the updated state of the INS.
20. The apparatus of claim 19, wherein, In order to provide the updated status of the INS, the one or more processors are configured to provide information indicating the updated status of the INS to software applications, operating systems, user interfaces, vehicle systems, or remote devices, or combinations thereof.
21. An apparatus for vehicle navigation, the apparatus comprising: components for determining a first attitude of a vehicle relative to a reference frame at a first epoch; components for determining the attitude of an inertial navigation system (INS) of the vehicle at a second epoch after the first epoch based on measurement data from the INS; components for determining a second attitude of the vehicle at the second epoch based on the determined attitude of the INS at the second epoch; and components for applying constraints to the determined second attitude of the vehicle to generate an updated second attitude of the vehicle, wherein... The constraint restricts the change of one or more aspects of the vehicle's second attitude from the first epoch to the second epoch; and the component for determining the updated attitude of the INS based on the updated second attitude of the vehicle.
22. The appliance as claimed in claim 21, wherein, The components used to determine the first attitude of the vehicle include components for making the determination of the first attitude of the vehicle at least in part based on the following: the attitude of the INS relative to the reference frame at the first epoch, or the orientation of the main frame of the INS relative to the main frame of the vehicle at the first epoch, or a combination thereof.
23. The appliance as claimed in claim 21, wherein, The component used to determine the attitude of the INS at the second epoch includes: a component for determining the attitude relative to the reference frame.
24. The appliance as claimed in claim 21, wherein, The component for determining the attitude of the INS at the second epoch includes: a component for making the determination of the attitude of the INS at the second epoch based on the attitude of the INS at the first epoch.
25. The appliance as claimed in claim 21, wherein, The component used to apply the constraint includes a component for detecting the condition of the yaw angle of the determined second attitude of the vehicle.
26. The appliance as claimed in claim 21, wherein, The component used to apply the constraint includes a component for modifying the roll angle of the determined second attitude of the vehicle.
27. The apparatus of claim 21 further includes: a component for providing the updated attitude of the INS.
28. The appliance as claimed in claim 27, wherein, The component for providing the updated attitude of the INS includes: a component for providing data indicating the updated attitude of the INS to a software application, operating system, user interface, vehicle system, or remote device, or a combination thereof.
29. A non-transitory computer-readable medium storing instructions for vehicle navigation, the instructions comprising code for performing the following operations: determining a first attitude of the vehicle relative to a reference frame at a first epoch; determining the attitude of the inertial navigation system (INS) of the vehicle at a second epoch after the first epoch, based on measurements from the INS; determining a second attitude of the vehicle at the second epoch, based on the determined attitude of the INS at the second epoch; applying constraints to the determined second attitude of the vehicle to generate an updated second attitude of the vehicle, wherein... The constraint restricts the change of one or more aspects of the vehicle's second attitude from the first epoch to the second epoch; and based on the updated second attitude of the vehicle, the updated attitude of the INS is determined.
30. The non-transitory computer-readable medium as described in claim 29, wherein, The code used to determine the first attitude of the vehicle includes code for determining the first attitude of the vehicle based at least in part on the attitude of the INS relative to the reference frame at the first epoch, or the orientation of the main frame of the INS relative to the main frame of the vehicle at the first epoch, or a combination thereof.