# Patent

## Title
System and method for simultaneous localization and map building

## Abstract

An autonomous vehicle comprises at least one image sensor to provide measurements of landmark position for a plurality of landmarks; and processing functionality to estimate the position of the plurality of landmarks in a global frame and in the autonomous vehicle's frame, and to estimate the kinematic state of the autonomous vehicle in a global frame based, at least in part, on the measurements of landmark position from the at least one image sensor. The processing functionality is further operable to calculate errors in the estimated positions of the plurality of landmarks in the global frame and in the estimate of the kinematic state of the autonomous vehicle in the global frame by using a plurality of unit projection vectors between the estimated positions of the plurality landmarks in the autonomous vehicle's frame and a plurality of unit projection vectors between the estimated positions of the plurality of landmarks in the global frame.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a divisional of U.S. application Ser. No. 12/432,026, filed on Apr. 29, 2009, the disclosure of which is incorporated herein by reference.


BACKGROUND
It is desirable for autonomous vehicles to be able to navigate in an unknown environment. One approach to navigating in an unknown environment is Simultaneous Localization And Map building (SLAM). Map Building refers to locating and estimating the position of landmarks in the unknown environment and Localization refers to estimating the position of the autonomous vehicle relative to the located landmarks. In other words, SLAM constitutes generating a map of the unknown environment and then navigating relative to the generated map.
The autonomous vehicle typically generates the map by using image sensors located on the autonomous vehicle to locate the landmarks. Landmarks can be any fixed object in the area such as trees, parked cars, buildings, statues, etc. The estimated location of the landmarks is initially resolved in the reference frame of the autonomous vehicle (also referred to herein as a vehicle frame) because the image sensors are mounted on the autonomous vehicle. However, in order to navigate effectively, the location of the landmarks must be resolved in a global reference frame (also referred to herein as a navigation frame). In estimating the orientation of the autonomous vehicle in the global frame, heading angle drift, or bias, error is introduced into the calculations.
The heading angle drift error refers to the difference between the actual heading angle and the estimated heading angle. The heading angle bias error introduces errors in the estimated position and velocity of the vehicle in the global frame as compared to the actual position and velocity of the vehicle and the estimated position of the landmarks in the global frame as compared to the actual position of the landmarks in the global frame.
One conventional technique for correcting the heading angle drift error is to compare the estimated location of a known landmark with the actual location of the known landmark. The difference in location is due, in part, to heading angle drift error. However, this technique requires knowledge of the actual location of the landmark. In environments where the actual location of a landmark is not known, the conventional technique can not be used.
SUMMARY
In one embodiment, an autonomous vehicle is provided. The autonomous vehicle comprises at least one image sensor to provide measurements of landmark position for a plurality of landmarks; and processing functionality to estimate the position of the plurality of landmarks in a global frame and in the autonomous vehicle's frame, and the kinematic state of the autonomous vehicle in a global frame based, at least in part, on the measurements of landmark position from the at least one image sensor. The processing functionality is further operable to calculate errors in the estimated positions of the plurality of landmarks in the global frame and in the estimate of the kinematic state of the autonomous vehicle in the global frame by using a plurality of unit projection vectors between the estimated positions of the plurality landmarks in the autonomous vehicle's frame and a plurality of unit projection vectors between the estimated positions of the plurality of landmarks in the global frame.



DRAWINGS
Understanding that the drawings depict only exemplary embodiments and are not therefore to be considered limiting in scope, the exemplary embodiments will be described with additional specificity and detail through the use of the accompanying drawings, in which:
FIGS. 1A and 1B are block diagrams of embodiments of an autonomous vehicle.
FIG. 2 is an exemplary diagram depicting a relationship between a global frame, an estimated body frame, and an actual body frame.
FIG. 3 is a flow chart depicting one embodiment of a method of estimating heading angle drift errors.
FIG. 4 is a flow chart depicting one embodiment of a method of operating an autonomous vehicle.



In accordance with common practice, the various described features are not drawn to scale but are drawn to emphasize specific features relevant to the exemplary embodiments.
DETAILED DESCRIPTION
In the following detailed description, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration specific illustrative embodiments. However, it is to be understood that other embodiments may be utilized and that logical, mechanical, and electrical changes may be made. Furthermore, the methods presented in the accompanying drawings and the specification are not to be construed as limiting the order in which the individual steps may be performed. The following detailed description is, therefore, not to be taken in a limiting sense.
The embodiments described below enable the estimation of heading angle drift errors without knowledge of the actual location of any landmarks. In particular, the embodiments described below enable the estimation of heading angle drift error based on image sensor measurements of landmark locations.
FIG. 1A is a block diagram of one embodiment of an autonomous vehicle 100. Vehicle 100 includes one or more image sensors 104. For example, image sensors 104 can include, but are not limited to, stereo vision cameras, Laser Detection and Ranging (LADAR) sensors, milli-meter wave Radio Detection and Ranging (RADAR) sensors, ultrasonic range finders, etc. Image sensors 104 provide data regarding landmarks in the environment around the vehicle 100 to processing functionality 102.
Processing functionality 102 can be implemented using software, firmware, hardware, or any appropriate combination thereof, as known to one of skill in the art. For example, processing functionality 102 can include or interface with hardware components and circuitry that support the processing of sensor measurements to determine landmark location and estimate error in either the landmark or vehicle position. By way of example and not by way of limitation, these hardware components can include one or more microprocessors, memory elements, digital signal processing (DSP) elements, interface cards, and other standard components known in the art. Any of the foregoing may be supplemented by, or incorporated in, specially-designed application-specific integrated circuits (ASIC) and field programmable gate arrays (FPGA).
Software instructions for performing the processing of processing functionality 102 can be tangibly embodied in any available media that can be accessed by a general purpose or special purpose computer or processor, or any programmable logic device. Suitable processor-readable media may include storage or memory media such as magnetic or optical media. For example, storage or memory media may include conventional hard disks, Compact Disk-Read Only Memory (CD-ROM), volatile or non-volatile media such as Random Access Memory (RAM) (including, but not limited to, Synchronous Dynamic Random Access Memory (SDRAM), Double Data Rate (DDR) RAM, RAMBUS Dynamic RAM (RDRAM), Static RAM (SRAM), etc.), Read Only Memory (ROM), Electrically Erasable Programmable ROM (EEPROM), and flash memory, etc. Suitable processor-readable media may also include transmission media such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as a network and/or a wireless link.
Processing functionality 102 includes map building functionality 108, Localization/Navigation functionality 110, and Error estimation functionality 112. Map building functionality 108 uses the measurements from Image sensors 104 to measure and estimate the location of landmarks in the environment around the vehicle 100 using techniques known to one of ordinary skill in the art. Localization/Navigation functionality 110 estimates the kinematic state of the vehicle 100 and landmark positions in the global frame (also referred to herein as the navigation frame) using techniques known to one of skill in the art. For example, in some embodiments, an extended Kalman filter is used to blend measurements from different sensors to estimate the kinematic state of the vehicle. The different sensors can include, but are not limited to, different types of image sensors, as mentioned above, and an Inertial Measurement Unit (IMU), as shown in FIG. 1B, which provides measurements of the kinematic state of the vehicle 100. As used herein, the kinematic state of the vehicle 100 refers to the vehicle's position, velocity, attitude (three-dimensional orientation), and/or angular velocity. A global frame is a reference frame that is independent of the vehicle orientation or position.
Error estimation functionality 112 in processing functionality 102 estimates the heading angle drift error, corrects the estimates of the vehicle's attitude, and corrects the estimated position and velocity of the vehicle in the global frame and the estimated position of the landmarks in the global frame using measurements of the position of the landmarks in the autonomous vehicle's frame. In particular, error estimation functionality 112 compares the estimated position of the landmarks in the global frame with the measurements of the landmark positions in the vehicle frame. Since the images sensors 104 obtain measurements of the landmark positions in the vehicle frame, the estimates of landmark position in the vehicle frame are not subject to the heading angle drift error. Hence, error estimation functionality 112 is able to estimate the heading angle drift error without requiring knowledge of the actual location of the landmarks. Additional details regarding the estimation of heading angle drift errors are described below with respect to FIG. 3. Error estimation functionality 112 also updates estimates of the vehicle's position and velocity and landmark position in the global frame using the estimated heading angle drift error.
Guidance and control functionality 114 uses the updated estimates of vehicle kinematic state and landmark position to calculate control signals for actuators 106 using techniques known to one of ordinary skill in the art. For example, actuators 106 in a land vehicle can include, but are not limited to, brakes, steering column, accelerator, etc. It is to be understood, however, that vehicle 100 is not to be limited to a land vehicle. In particular, vehicle 100 can be implemented as an Unmanned Aerial Vehicle (UAV), a lunar lander, a planetary rover, or an Unmanned Underwater Vehicle (UUV) in other embodiments. In such embodiments, actuators 106 are implemented according to the type of vehicle. Thus, guidance and control functionality 114 provides control signals to cause the vehicle to change heading, increase and decrease speed, etc. based on the updated estimates of vehicle kinematic state and landmark positions in the global frame.
FIG. 2 is a diagram representing an exemplary relationship between the actual vehicle frame, Fb, the global frame, FN, and the estimated orientation of the vehicle relative to the global frame or estimated vehicle frame, F{circumflex over (b)}. In FIG. 2, the Direction Cosine Matrix, C{circumflex over (b)}N({circumflex over ( α), represents the rotation between the global frame and the estimated vehicle frame, where {circumflex over ( α represents the estimated Euler angles of the vehicle (also referred to as mean orientation angles). The Direction Cosine Matrix, CbN( α), represents the rotation between the global frame and the actual vehicle frame, where α represents the actual Euler angles of the vehicle. The difference in orientation between the actual vehicle frame and the estimated vehicle frame is represented by the Direction Cosine Matrix, Cb{circumflex over (b)}(δ α), where δ α is the error in the Euler angles or difference between the estimated Euler angles and the actual Euler angles. The estimated vehicle frame is the orientation of the vehicle 100 calculated using the estimated Euler angles and the actual vehicle frame is the orientation of the vehicle 100 calculated using the actual Euler angles.
FIG. 3 is a flow chart of one embodiment of a method 300 of estimating the heading angle drift error and correcting the estimates of the kinematic state of the vehicle and the position of landmarks in the global frame. Method 300 is implemented in Error estimation functionality 112 described above. At block 302, landmark positions are calculated in the vehicle frame (also referred to herein as a body frame) using measurements of landmark positions from Image sensors 104. At block 304, the landmark positions are calculated in the global frame by resolving the estimated landmark positions in the autonomous vehicle frame in the global frame.
At block 306, unit projection vectors are formed between landmark positions in the global frame. In particular, unit projection vectors are formed between positions of at least three landmarks. The unit projection vectors in the global frame can be represented by the equation:




  
    
      
        
          
            u
            ij
            N
          
          =
          
            
              
                l
                i
                N
              
              -
              
                l
                j
                N
              
            
            
              |
              
                
                  l
                  i
                  N
                
                -
                
                  l
                  j
                  N
                
              
              |
            
          
        
        ,
        
          i
          ≠
          j
        
      
    
    
      
        Eq
        .
        
          
        
        ⁢
        1
      
    
  




(note: the superscript N refers to resolving a vector in the navigation, or global, frame)

At block 308, unit projection vectors are formed between landmark positions in the vehicle frame. The same set of landmarks that are used in block 306 in the global frame are used in block 308. The unit projection vectors in the vehicle frame can be represented by the equation:




  
    
      
        
          
            u
            ij
            b
          
          =
          
            
              
                l
                i
                b
              
              -
              
                l
                j
                b
              
            
            
              |
              
                
                  l
                  i
                  b
                
                -
                
                  l
                  j
                  b
                
              
              |
            
          
        
        ,
        
          i
          ≠
          j
        
      
    
    
      
        Eq
        .
        
          
        
        ⁢
        2
      
    
  




(note: the superscript b refers to resolving a vector in the body, or vehicle, frame)

In the above equations the subscripts i and j are incremented from 1 to the total number of landmarks used. At block 310, the unit projection vectors are used to calculate the heading angle drift errors in the estimate of the vehicle kinematic state and the estimate of the landmark positions in the global frame. In particular, a constrained optimization problem, such as Wahba's problem in this embodiment, is formulated and solved using the projection vectors. Wahba's problem is a general constrained optimization problem described in SIAM Review, Vol. 8, No. 3 (July, 1966), 384-386. Formulating and solving Wahba's problem includes finding the Direction Cosine Matrix Cb{circumflex over (b)} which minimizes the Euclidean norm between the unit vectors. This can be expressed by the following equation:




  
    
      
        
          J
          =
          
            
              
                min
                
                  C
                  
                    b
                    ⁢
                    
                      b
                      ^
                    
                  
                
              
              ⁢
              
                ∑
                
                  n
                  =
                  1
                
                
                  
                    No
                    .
                    
                      
                    
                    ⁢
                    of
                  
                  ⁢
                  
                    
                  
                  ⁢
                  unique
                  ⁢
                  
                    
                  
                  ⁢
                  Lmk
                  ⁢
                  
                    
                  
                  ⁢
                  pairs
                
              
            
            ⁢
            
              
            
            |
            
              
                u
                
                  ij
                  ,
                  n
                
                b
              
              -
              
                
                  C
                  
                    b
                    ⁢
                    
                      b
                      ^
                    
                  
                
                ⁡
                
                  (
                  
                    
                      C
                      
                        
                          b
                          ^
                        
                        ⁢
                        N
                      
                    
                    ⁢
                    
                      u
                      
                        ij
                        ,
                        n
                      
                      N
                    
                  
                  )
                
              
            
            |
          
        
        ,
      
    
    
      
        Eq
        .
        
          
        
        ⁢
        3
      
    
  




subject to Cb{circumflex over (b)}Cb{circumflex over (b)}T=Cb{circumflex over (b)}TCb{circumflex over (b)}=I3×3 

The known Singular Value Decomposition (SVD) method is then applied to find an optimal solution. An optimal solution preserves the orthonormal constraint of the Direction Cosine Matrix Cb{circumflex over (b)}. In applying the SVD method, a matrix M is formulated from the outer product of the unit vector projections, as represented by the following equation:




  
    
      
        M
        =
        
          
            ∑
            
              n
              =
              1
            
            
              
                No
                .
                
                  
                
                ⁢
                of
              
              ⁢
              
                
              
              ⁢
              unique
              ⁢
              
                
              
              ⁢
              Lmk
              ⁢
              
                
              
              ⁢
              pairs
            
          
          ⁢
          
            
              u
              
                ij
                ,
                n
              
              b
            
            ⁢
            
              u
              
                ij
                ,
                n
              
              
                
                  b
                  ^
                
                ⁢
                T
              
            
          
        
      
    
    
      
        Eq
        .
        
          
        
        ⁢
        4
      
    
  




Then, the SVD is computed as represented by the following equation:

M=UΣVT  Eq. 5

In equation 5 above, the matrix Σ is a diagonal matrix containing singular values of the matrix M. The columns of matrix U form a set of mutually orthogonal vectors which are formulated from the eigenvectors of MMT. The matrix VT is the conjugate transpose of the matrix V whose columns form a set of mutually orthogonal vectors which are formulated from the eigenvectors of MTM. An optimal solution to Wahba's problem is calculated using the matrices U and V as shown in the following equation:

Cb{circumflex over (b)}=Udiag[1 1 (detUdetV)]VT  Eq. 6

FIG. 4 is a flow chart depicting one embodiment of a method 400 of operating an autonomous vehicle which incorporates the error estimation described above. At block 402, sensor measurements regarding the position of landmarks in the vehicle frame are received from image sensors 104. At block 404, the kinematic state of the autonomous vehicle in the global frame and the landmark positions in the global frame are calculated. At block 406, heading angle drift errors in the estimated vehicle kinematic state in the global frame and/or the estimate of the landmark positions in the global frame are calculated as described above with respect to method 300. At block 408, estimates of the vehicle's state vector are updated based on the calculated heading angle drift errors. The vehicle's state vector includes the vehicle's kinematic state and the landmark positions in the global frame. In particular, the mean orientation angles are updated using the following equation:

ĈbN=Cb{circumflex over (b)}C{circumflex over (b)}N  Eq. 7

In equation 7, Cb{circumflex over (b)} is the Direction Cosine Matrix formulated from the estimates of heading angle bias error. C{circumflex over (b)}N is the Direction Cosine Matrix which represents the rotation between the global frame and the estimated vehicle frame. ĈbN is the updated Direction Cosine Matrix which represents the rotation between the global frame and the actual vehicle frame. The corrected Euler angles (mean orientation angles) are computed from ĈbN.
The mean vehicle position vector in the global frame, {circumflex over (p)}k/kN, is updated as expressed in the following equation:

{circumflex over (p)}k/kN=CN{circumflex over (b)}C{circumflex over (b)}b{circumflex over (p)}k/kb  Eq. 8

In equation 8, {circumflex over (p)}k/kb is the mean vehicle position vector estimate in the vehicle frame following updates using measurements from the Image sensors 104. The estimate landmark position vector in the global frame, {circumflex over (l)}k/kN, is updated as expressed in the following equation:

{circumflex over (l)}k/kN=CN{circumflex over (b)}C{circumflex over (b)}b{circumflex over (l)}k/kb  Eq. 9

In equation 9, {circumflex over (l)}k/kb is the mean landmark position vector estimate in the vehicle frame following updates using measurements from the Image sensors 104. After updating the vehicle and landmark position vector estimates in the global frame, the autonomous Vehicle 100 maneuvers in the area using the updated position vector estimates at block 410. In particular, Vehicle 100 provides control signals to one or more actuators to control movement of the Vehicle 100 as described above.
Hence, the embodiments described herein enable the calculation of errors in the vehicle kinematic state estimates and landmark positions in the global frame without the need for knowledge of the actual location of any landmarks. This helps enable the Vehicle 100 to maneuver in unknown environments.
Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement, which is calculated to achieve the same purpose, may be substituted for the specific embodiments shown. Therefore, it is manifestly intended that this invention be limited only by the claims and the equivalents thereof.

## Claims

1. A method of operating an autonomous vehicle, the method comprising:
receiving a measurement of landmark position for each of a plurality of landmarks from at least one image sensor;
estimating a kinematic state of the autonomous vehicle in a global frame based, at least in part, on the received measurements from the at least one image sensor;
estimating a position of the plurality of landmarks in a frame of the autonomous vehicle and in the global frame based on the received measurements from the at least one image sensor;
forming a plurality of unit projection vectors between the estimated positions of the plurality of landmarks in the global frame;
forming a plurality of unit projection vectors between the estimated positions of the plurality of landmarks in the frame of the autonomous vehicle; and
calculating heading angle drift errors based on the plurality of unit projection vectors in the global frame and the plurality of unit projection vectors in the frame of the autonomous vehicle; and
updating the estimate of the kinematic state of the autonomous vehicle in the global frame based on the calculated heading angle drift errors.

2. The method of claim 1, wherein estimating the kinematic state of the autonomous vehicle in the global frame includes:
receiving measurements from an inertial measurement unit (IMU) that are related to the kinematic state of the autonomous vehicle in the autonomous vehicle's frame; and
blending the IMU measurements with the measurements received from the at least one image sensor.

3. The method of claim 1, wherein calculating the heading angle drift errors based on the plurality of unit projection vectors comprises calculating an optimal solution to a constrained optimization problem using the plurality of unit projection vectors from the frame of the autonomous vehicle and the plurality of unit projection vectors from the global frame.

4. The method of claim 3, wherein calculating an optimal solution to the constrained optimization problem comprises computing a Singular Value Decomposition (SVD) based on the plurality of unit projection vectors from the frame of the autonomous vehicle and the plurality of unit projection vectors from the global frame.

5. The method of claim 1, wherein the at least one image sensor comprises one or more of stereo vision cameras, a Laser Detection and Ranging (LADAR) sensor, a milli-meter wave Radio Detection and Ranging (RADAR) sensor, and an ultrasonic range finder.

6. The method of claim 1, further comprising:
updating the estimated position of the plurality of landmarks in the global frame based on the calculated heading angle drift errors.

7. The method of claim 6, further comprising:
maneuvering the autonomous vehicle based on the updated estimate of the kinematic state of the autonomous vehicle in the global frame.