# Patent

## Title
Gyroless three-axis sun acquisition using sun sensor and unscented kalman filter

## Abstract

An attitude estimator that uses sun sensor outputs as the only attitude determination measurements to provide three-axis attitude information. This is accomplished by incorporating the Euler equation into the estimator. An unscented Kalman filter is employed to accommodate various nonlinear characteristics and uncertainties of the spacecraft dynamics and thus improve the robustness and accuracy of the attitude estimate.

## Background
RELATED PATENT APPLICATION
This application claims the benefit, under Title 35, United States Code, §119(e), of U.S. Provisional Application No. 61/765,316 filed on Feb. 15, 2013, the disclosure of which is incorporated by reference herein in its entirety.


BACKGROUND
The subject matter disclosed herein is generally directed toward systems and methods for obtaining knowledge of spacecraft attitude without using a gyroscope.
Due to limited resources or gyro failure, spacecraft attitude control systems (ACS) can face drastic challenges in mission accomplishment. Various ACS designs have been proposed to address satellite attitude control without a gyroscope. The critical life-saving maneuver when satellite attitude is lost in space is the so-called sun acquisition maneuver, in which the spacecraft is rotated about an axis normal to the sun line so that a solar panel sees the sun periodically and the rate of rotation about the sun line is regulated.
Spacecraft, such as an Earth-orbiting satellite, can become disoriented during flight. For spacecraft that use solar cells to generate power, in some cases the spacecraft disorientation can affect the proper spacecraft antenna pointing and the output of the spacecraft solar cells, resulting in reduced electrical power to the spacecraft. If the electrical power provided by the solar cells is low, it is advantageous to re-orient the spacecraft and/or solar panels so that the solar cells are perpendicular or nearly perpendicular to the Sun, along a sun line between the Sun and the spacecraft solar panels.
When the spacecraft solar cells are properly oriented relative to the Sun, it can be said that the spacecraft has acquired a proper orientation to the Sun. Information is needed to re-orient a disoriented spacecraft in three-dimensional space. Previously, a gyroscope and/or a star tracker (comprising, e.g., imaging hardware and a high-speed computer processor) were used to provide the needed information. However, both gyroscopes and star trackers are expensive and prone to failure.
A sun sensor senses the direction to the Sun and can be as simple as some solar cells and shades or as complex as a steerable telescope, depending on mission requirements. However, a sun sensor cannot detect a change in spacecraft attitude when the spacecraft rotates about the sun line, and can at most provide two-axis rate information. Alternatively, an earth sensor could be used together with a sun sensor when three-axis attitude and/or rate information is needed. One problem, however, is that an earth sensor cannot be used when the spacecraft is in a transfer orbit or pointing away from the Earth.
There is a need for systems and methods to provide information needed to re-orient a disoriented spacecraft without requiring a gyroscope, resulting in a more reliable and less costly spacecraft.
SUMMARY
The subject matter disclosed in detail below is directed to systems and methods for calculating a spacecraft attitude estimate in the absence of a gyroscope. In some cases, a gyroscope on a satellite or other spacecraft may fail or become inoperative. In other cases, it may be desirable to not fly a gyroscope at all, which would reduce the cost of a satellite or other spacecraft. The system and methodology disclosed herein provide a way to regain lost spacecraft pointing capabilities by deriving estimated attitude information using only sun sensors. In the embodiments disclosed hereinafter, a sun sensor serves as an attitude sensor to generate an attitude estimate that is used in re-orienting the spacecraft. The disclosed embodiments also use an unscented Kalman filter to accommodate various nonlinear characteristics and uncertainties of the spacecraft dynamics to improve the robustness and accuracy of the attitude estimate.
The embodiments disclosed herein rely upon a novel Euler-equation-based formulation which is used to obtain the rate information for rotation about the sun line of a satellite. In this case, the angular rate information about the sun line cannot be obtained from sun sensor measurements. As shown below, the missing attitude information about the sun line can be obtained from the Euler equation. This means that the three-axis attitude information can be constructed using only sun sensor measurements, without the need of a gyroscope or other rate or attitude sensors.
However, there are two difficulties with the foregoing proposed approach. The first difficulty is related to the use of the Euler equation. Namely, the spacecraft inertia matrix used in the Euler equation may not be known correctly, the initial value of the spacecraft angular rate is not known, and there may be unknown uncertainties or external disturbances not included in the equation. The second difficulty is that the attitude drift about the sun line cannot be detected by sun sensors.
One might try to overcome the first difficulty by using an extended Kalman filter to deal with the above-described uncertainties and the unknown initial conditions. An extended Kalman filter requires the derivation of Jacobian matrices. However, because of the severe nonlinearity of the equation and the complexity in deriving the Jacobian matrices for the linearized equations, it is expected that satisfactory results would not be obtained were an extended Kalman filter employed. Instead, an unscented Kalman filter, which does not require either linearization or the derivation of Jacobian matrices, has been shown to be suitable to work with highly nonlinear systems. For example, in a paper entitled “Unscented Filtering for Spacecraft Attitude Estimation”, AIAA Journal of Guidance, Control, and Dynamics, Vol. 26, No. 4 (2003), pp. 536-542, Crassidis and Markley showed that by using an unscented Kalman filter and the quaternion kinematic equation with a gyro as rate sensor and a magnetometer as attitude sensor, attitude estimates can converge quickly even with large initial attitude error. Hence, an unscented Kalman filter works well in this situation, i.e., the about-sun line angular rate can be estimated accurately.
The second difficulty is overcome by introducing spacecraft angular momentum in an inertial coordinate system as an additional attitude reference. Because the angular momentum in an inertial coordinate system is fixed in space, this added reference and the available sun reference constitute the two independent attitude references needed to uniquely define an attitude. Consequently, the drift about the sun line problem can be resolved.
The attitude estimator disclosed in detail below can be employed to obtain the optimal spacecraft attitude estimate in the presence of sensor noises and unknown initial conditions and unknown disturbances and unknown spacecraft parameters such as inertia. To overcome the uncertainties and unknown initial conditions, an attitude estimator is proposed that uses an unscented Kalman filter, the quaternion kinematic equation and the Euler dynamic equation, with sun sensors only, to obtain the three-axis attitude information. The attitude estimator disclosed in detail below is expected to be compatible with nearly any attitude controller. The performance of the proposed attitude estimator has been demonstrated by applying it to a three-axis closed-loop sun acquisition process using an onboard processor to control the spin of the spacecraft.
One aspect of the subject matter disclosed herein is a method of estimating a three-axis attitude of a spacecraft, comprising: (a) measuring sun unit vectors at successive instants of time using a plurality of sun sensors attached to a spacecraft; (b) calculating angular rates and angular accelerations of the spacecraft about first and second axes perpendicular to the sun line based on the sun unit vector measurements; (c) calculating an angular acceleration of the spacecraft about the sun line using the sun unit vector measurements, a Euler equation and an unscented Kalman filter; and (d) calculating a three-axis attitude of a spacecraft based on the calculation results in steps (b) and (c). The estimator state of the unscented Kalman filter consists of a sun line spacecraft angular rate and a sun pointing inertial frame to spacecraft body frame quaternion. The method uses spacecraft total angular momentum vector as an additional attitude reference.
Another aspect of the subject matter disclosed herein is a spacecraft comprising a body, at least one solar panel coupled to the body, a plurality of sun sensors arranged on the body, and a computer system programmed to perform the following operations: (a) measuring sun unit vectors at successive instants of time using a plurality of sun sensors attached to a spacecraft; (b) calculating angular rates and angular accelerations of the spacecraft about first and second axes perpendicular to the sun line based on the sun unit vector measurements; (c) calculating an angular acceleration of the spacecraft about the sun line using the sun unit vector measurements, a Euler equation and an unscented Kalman filter; and (d) calculating a three-axis attitude of a spacecraft based on the calculation results in operations (b) and (c).
A further aspect is a method of commanding a satellite to adjust its attitude to achieve sun acquisition, the method comprising: (a) measuring sun unit vectors at successive instants of time using a plurality of sun sensors attached to a spacecraft; (b) calculating angular rates and angular accelerations of the spacecraft about first and second axes perpendicular to the sun line based on the sun unit vector measurements; (c) calculating an angular acceleration of the spacecraft about the sun line using the sun unit vector measurements, a Euler equation and an unscented Kalman filter; (d) calculating a three-axis attitude of a spacecraft based on the calculation results in steps (b) and (c); and (e) commanding changes in spacecraft attitude based on differences between a target three-axis attitude and the calculated three-axis attitude.
Yet another aspect of the subject matter disclosed herein is a system for controlling the attitude of a spacecraft based on sun sensor measurements and not gyroscope measurements, comprising: a spacecraft body; at least one solar panel coupled to the body; a plurality of sun sensors arranged on the body; a control processor that outputs torque commands; and means for producing torques that change the attitude of the spacecraft in response to torque commands from the attitude control processor, wherein the control processor is programmed to perform operations in accordance with software comprising: an attitude estimator for calculating a three-axis attitude of the spacecraft body based on sun unit vector measurements made by the plurality of sun sensors and a Euler equation; and an attitude controller that outputs a torque command based on a difference between a target three-axis attitude/rate and the calculated three-axis attitude/rate. The attitude estimator comprises an unscented Kalman filter having an estimator state consisting of a sun line spacecraft angular rate and a sun pointing inertial frame to spacecraft body frame quaternion. The structures that perform the function of the torque-producing means may include reaction wheels or thrusters.
Other aspects of systems and methods for gyroless attitude control of a spacecraft using sun sensors are disclosed and claimed below.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram showing some components of a spacecraft having an attitude control system which is programmed to re-orient a disoriented spacecraft using sun sensor measurements and an unscented Kalman filter.
FIG. 2 is a diagram representing a spacecraft that is rotating about a sun line. The frame of reference of the spacecraft body is indicated by X, Y and Z axes.
FIG. 3 is a diagram showing X, Y and Z axes of a sun pointing inertial frame of reference.
FIG. 4 is a graph showing four sigma points {circumflex over (x)}k-1(1), {circumflex over (x)}k-1(2), {circumflex over (x)}k-1(3), and {circumflex over (x)}k-1(4) positioned around an unscented Kalman filter estimator state {circumflex over (x)}k-1+, where the subscript k-1 indicates the time instant.
FIG. 5 is a diagram representing an unscented Kalman filter estimation process.
FIG. 6 is a block diagram showing inputs to an unscented Kalman filter.
FIG. 7 is a diagram representing a spacecraft that has solar panels facing in respective opposite directions along the ±Y axes.
FIG. 8 is a diagram showing sun acquisition simulation results for a case having a 6 deg/sec initial rate estimate error with exact moment of inertia knowledge.



Reference will hereinafter be made to the drawings in which similar elements in different drawings bear the same reference numerals.
DETAILED DESCRIPTION
The following detailed description is merely exemplary in nature and is not intended to limit coverage to the described embodiments or the disclosed applications and uses of the described embodiments. Furthermore, there is no intention to be bound by any particular theory expressed, implied or relied upon in the preceding background and summary or in the following detailed description.
In particular, embodiments are disclosed which use a Euclidean expression of three-dimensional spacecraft rates and accelerations, where a spacecraft momentum vector in a known inertial frame of reference is used as a second attitude reference, to estimate the spacecraft three-axis attitude. The estimated attitude is adjusted continuously by clocking the phase about the sun line to maintain the same or nearly the same spacecraft momentum vector component perpendicular to the sun line, thereby preventing attitude estimate drift about the sun line.
One method for achieving three-axis stabilization is to use electrically powered reaction wheels, also called momentum wheels. Massive wheels are mounted aboard the spacecraft. They provide a means to trade angular momentum back and forth between spacecraft and wheels.
FIG. 1 shows some components of a spacecraft having an attitude control processor 2 that is programmed to re-orient a disoriented spacecraft using measurements acquired by one or more sun sensors 14 mounted to the spacecraft body 10, which sense the direction to the Sun. The spacecraft body 10 can be rotated about three axes by means of a multiplicity of actuators 12. The actuators 12 can be either reaction wheels or thrusters, or both reaction wheels and thrusters can be used. Preferably the actuators 12 include respective sets of actuators for each axis of rotation.
The attitude control processor 2 is capable of executing attitude control operations in accordance with instructions stored in a plurality of flight software modules, including an attitude estimator 6, attitude control laws 4, and command control steering laws 8 referenced to an inertial frame with a fixed offset to an ECI frame of reference. The attitude control processor 2 applies the attitude control laws 4 based on the command control steering laws module 8 and attitude estimates from the attitude estimator 6, performing calculations to determine the appropriate commands to issue to the actuators 12. The attitude control laws 4 comprise algorithms to command the actuators 12 based on sensor measurements of the current attitude/rate and specification of a desired attitude/rate in accordance with command control steering laws 8.
The attitude control laws 4 include a sun-sensor-only gyroless sun acquisition algorithm that outputs torque commands to direct the acquisition maneuvers and place the spacecraft body 10 in a power/thermal safe state. The attitude estimator 10 is programmed to compute spacecraft attitude and rate estimates based on attitude measurements received from the sun sensors 14 without any input from a gyroscope or from star trackers. The attitude control laws 4 use the commanded and estimated attitudes and estimated rates to compute the thruster or wheel torques, or both.
In accordance with one embodiment, the attitude estimator 6 seen in FIG. 1 involves an attitude estimation processing which uses the attitude measurements from the sun sensors (and does not use measurements from gyroscopes or star trackers) as input to derive the quaternion estimates (i.e., the estimated spacecraft attitude in terms of a quaternion), which quaternion estimates are used by the software module that implements the attitude control laws 4. The attitude estimator 6 can also compute rate estimates based on the attitude measurements. A rate estimate is an estimate of the spacecraft roll, pitch and yaw body rates with respect to an inertial reference frame. The computations performed by attitude estimator 6 are disclosed in detail below.
In accordance with one embodiment, the attitude estimator 6 is programmed to calculate estimates of the spacecraft attitude based on sensor feedback from one or more sun sensors 14, without feedback from any gyroscope or star tracker. The sun sensor only attitude estimation algorithm employs an unscented Kalman filter. This sun-sensor-only gyroless attitude estimator and its properties are described in the following sections.
Attitude Information about Sun Line
FIG. 2 shows a position of a spacecraft relative to the Sun. The spacecraft comprises a spacecraft body 20 and a pair of solar panels 22 and 24 which are stowable and deployable. Assume that a sun sensor (not shown) onboard the spacecraft sees the Sun. Sun sensor measurements can be used to compute a sun unit vector represented in an X, Y and Z coordinate system that is fixed relative to the spacecraft body (hereinafter “the spacecraft body frame”). The sun unit vector has a normalized length and is directed along the sun position vector relative to the spacecraft body frame. As shown in FIG. 2, the sun position vector pointing from the spacecraft to the Sun will be referred to herein as the “sun line”. When the spacecraft rotates about the sun line, the sun unit vector expressed in the spacecraft body frame remains the same. In other words, the sun sensor aimed along the sun line does not provide attitude information regarding rotation about the sun line; it only provides attitude information about directions perpendicular to the sun line.
Let bsm(t1) and bsm(t2) be sun unit vectors measured by a sun sensor at times t1 and t2 respectively. When t2 is close to t1, the spacecraft angular rate bωm can be calculated as




  
    ω
    
      
    
    m
    
      
        
      
      b
  
  =
  
    
      
        
          s
          
          m
          
            
            b
        
        ⁡
        
          (
          
            t
            1
          
          )
        
      
      ×
      
        
          s
          
            
          
          m
          
            
              
            
            b
        
        ⁡
        
          (
          
            t
            2
          
          )
        
      
    
    
      
        t
        2
      
      -
      
        t
        1
      
    
  




As used herein, a superscript “b” on left of a vector means the vector is resolved in the frame of reference (i.e., the coordinate system) of the spacecraft body.

In contrast, FIG. 3 shows a Sun Pointing Inertial (SPI) frame of reference. The SPI frame is defined to be an inertially fixed coordinate system with its Z-axis pointing to the Sun. The direction cosine matrix Cb_SPI maps the SPI frame of reference to the spacecraft body frame coordinates. Let the true spacecraft angular rate be




  
    
       
      b
    
    ⁢
    ω
  
  =
  
    
      
        C
        
          b
          ⁢
          
            
          
          ⁢
          _
          ⁢
          
            
          
          ⁢
          SPI
        
      
      SPI
    
    ⁡
    
      [
      
        
          
            
              w
              1
            
          
        
        
          
            
              w
              2
            
          
        
        
          
            
              w
              3
            
          
        
      
      ]
    
  




for some w1, w2 and w3.

Since sun sensor measurements do not change when the spacecraft rotates about the sun line, the angular rate about the sun line derived from sun sensor measurements should be zero; i.e., mathematically the measured spacecraft angular rate is





  
    
      
        
          ω
          
            
          
          m
          
            
              
            
            b
        
        =
        
          
            
              
                C
                
                  b
                  ⁢
                  
                    
                  
                  ⁢
                  _
                  ⁢
                  
                    
                  
                  ⁢
                  SPI
                
              
              SPI
            
            ⁡
            
              [
              
                
                  
                    
                      w
                      1
                    
                  
                
                
                  
                    
                      w
                      2
                    
                  
                
                
                  
                    0
                  
                
              
              ]
            
          
          =
          
            
              
                
                  s
                  
                  m
                  
                    
                    b
                
                ⁡
                
                  (
                  
                    t
                    1
                  
                  )
                
              
              ×
              
                
                  s
                  
                    
                  
                  m
                  
                    
                      
                    
                    b
                
                ⁡
                
                  (
                  
                    t
                    2
                  
                  )
                
              
            
            
              
                t
                2
              
              -
              
                t
                1
              
            
          
        
      
    
    
      
        (
        1
        )
      
    
  




Sun-Sensor-Only Attitude Estimator

In accordance with one embodiment, the sun-sensor-only attitude estimator has the following form similar to that of an extended Kalman filter:




  
    
      
        Attitude
        ⁢
        
          
        
        ⁢
        
          Estimator
          :
          
            {
            
              
                
                  
                    
                      
                        propagation
                        ⁢
                        
                          
                        
                        &
                      
                      ⁢
                      
                        
                      
                      ⁢
                      correction
                      ⁢
                      
                        :
                      
                      ⁢
                      
                        
                      
                      ⁢
                      
                        
                          x
                          ^
                        
                        .
                      
                    
                    =
                    
                      
                        f
                        ⁡
                        
                          (
                          
                            x
                            ^
                          
                          )
                        
                      
                      +
                      
                        K
                        ⁡
                        
                          (
                          
                            
                              y
                              m
                            
                            -
                            
                              y
                              ^
                            
                          
                          )
                        
                      
                    
                  
                
              
              
                
                  
                    
                      predicted
                      ⁢
                      
                        
                      
                      ⁢
                      measurement
                      ⁢
                      
                        :
                      
                      ⁢
                      
                        
                          
                            
                          
                          ⁢
                          y
                        
                        ^
                      
                    
                    =
                    
                      h
                      ⁡
                      
                        (
                        
                          x
                          ^
                        
                        )
                      
                    
                  
                
              
              
                
                  
                    
                      measurement
                      ⁢
                      
                        :
                      
                      ⁢
                      
                        
                      
                      ⁢
                      
                        y
                        m
                      
                    
                    =
                    
                      
                        [
                        
                          
                            s
                            
                              
                            
                            
                              m
                              T
                            
                            
                              
                                
                              
                              b
                          
                          ,
                          
                            
                              ω
                              .
                            
                            
                              
                            
                            
                              m
                              T
                            
                            
                              
                                
                              
                              b
                          
                        
                        ]
                      
                      T
                    
                  
                
              
            
          
        
      
    
    
      
        (
        2
        )
      
    
  




where K is the optimal state correction gain. As used herein, the symbol ^ on top of a variable indicates estimate.

In Eqs. (2), the estimate or the estimator state {circumflex over (x)} consists of the missing sun line spacecraft angular rate and the estimated SPI-to-spacecraft body frame quaternion:

{circumflex over (x)}=[ŵ3,{circumflex over (q)}b_SPIT]T.

The propagation function ƒ({circumflex over (x)}) is computed as




  
    
      
        
          
            
              
                w
                ^
              
              .
            
            3
          
          =
          0
        
        ⁢
        
          

        
        ⁢
        
          
            
              
                q
                ^
              
              .
            
            
              b
              ⁢
              
                
              
              ⁢
              _
              ⁢
              
                
              
              ⁢
              SPI
            
          
          =
          
            
              1
              2
            
            ⁢
            
              
                Ω
                ^
              
              ⁡
              
                (
                ω
                )
              
            
            ⁢
            
              
                q
                ^
              
              
                b
                ⁢
                
                  
                
                ⁢
                _
                ⁢
                
                  
                
                ⁢
                SPI
              
            
          
        
      
    
    
      
        (
        3
        )
      
    
  




(i.e., the quaternion kinematics equation), where ω is the three-component angular rate vector and





  
    
      
        
          
            Ω
            ^
          
          ⁡
          
            (
            ω
            )
          
        
        =
        
          
            [
            
              
                
                  
                    -
                    
                      [
                      
                        
                          
                             
                            b
                          
                          ⁢
                          
                            ω
                            ^
                          
                        
                        ×
                      
                      ]
                    
                  
                
                
                  
                    
                       
                      b
                    
                    ⁢
                    
                      ω
                      ^
                    
                  
                
              
              
                
                  
                    -
                    
                      
                        ω
                        ^
                      
                      
                      T
                      
                        
                        b
                    
                  
                
                
                  0
                
              
            
            ]
          
          =
          
            [
            
              
                
                  0
                
                
                  
                    
                      v
                      ^
                    
                    3
                  
                
                
                  
                    -
                    
                      
                        v
                        ^
                      
                      2
                    
                  
                
                
                  
                    
                      v
                      ^
                    
                    1
                  
                
              
              
                
                  
                    -
                    
                      
                        v
                        ^
                      
                      3
                    
                  
                
                
                  0
                
                
                  
                    
                      v
                      ^
                    
                    1
                  
                
                
                  
                    
                      v
                      ^
                    
                    2
                  
                
              
              
                
                  
                    
                      v
                      ^
                    
                    2
                  
                
                
                  
                    -
                    
                      
                        v
                        ^
                      
                      1
                    
                  
                
                
                  0
                
                
                  
                    
                      v
                      ^
                    
                    3
                  
                
              
              
                
                  
                    -
                    
                      
                        v
                        ^
                      
                      1
                    
                  
                
                
                  
                    -
                    
                      
                        v
                        ^
                      
                      2
                    
                  
                
                
                  
                    -
                    
                      
                        v
                        ^
                      
                      3
                    
                  
                
                
                  0
                
              
            
            ]
          
        
      
    
    
      
        (
        4
        )
      
    
  




and the angular rate estimate in the spacecraft body frame of reference is





  
    
      
        
          
            
          
          b
        
        ⁢
        
          [
          
            
              
                
                  
                    v
                    ^
                  
                  1
                
              
            
            
              
                
                  
                    v
                    ^
                  
                  2
                
              
            
            
              
                
                  
                    v
                    ^
                  
                  3
                
              
            
          
          ]
        
        =
        
          
            
              
                
                  C
                  ^
                
                
                  b
                  ⁢
                  
                    
                  
                  ⁢
                  _
                  ⁢
                  
                    
                  
                  ⁢
                  SPI
                
              
              SPI
            
            ⁡
            
              [
              
                
                  
                    
                      first
                      ⁢
                      
                        
                      
                      ⁢
                      two
                      ⁢
                      
                        
                      
                      ⁢
                      elements
                      ⁢
                      
                        
                      
                      ⁢
                      of
                      ⁢
                      
                        
                      
                      ⁢
                      
                        
                          C
                          ^
                        
                        
                          b
                          ⁢
                          
                            
                          
                          ⁢
                          _
                          ⁢
                          
                            
                          
                          ⁢
                          SPI
                        
                        T
                      
                      ⁢
                      
                        ω
                        
                          
                        
                        m
                        
                          
                            
                          
                          b
                      
                    
                  
                
                
                  
                    
                      
                        w
                        ^
                      
                      3
                    
                  
                
              
              ]
            
          
          ≡
          
            
               
              b
            
            ⁢
            
              ω
              ^
            
          
        
      
    
    
      
        (
        5
        )
      
    
  




The measurement ym consists of the measured sun unit vector bsm and the measured spacecraft angular acceleration b{dot over (ω)}m derived from the measured sun unit vector: ym=[bsmT, b{dot over (ω)}mT]T. After converting the quaternion {circumflex over (q)}b_SPI into a direction cosine matrix, the predicted measurement ŷ=h({circumflex over (x)})=[bŝT, b{dot over ({circumflex over (ω)})}12T]T is computed as

bŝ=Ĉb_SPI,3rd,column 

b{dot over ({circumflex over (ω)})}12=b{circumflex over ({dot over (ω)})}−[b{circumflex over (ω)}×]Ĉb_SPISPI{circumflex over (ω)}3  (6)

where {dot over ({circumflex over (ω)})}12 is the predicted spacecraft angular acceleration that does not contain the acceleration about sun line, b{circumflex over ({dot over (ω)})} is calculated from the Euler equation

b{circumflex over ({dot over (ω)})}=−Î−1(b{circumflex over (ω)}×Îb{circumflex over (ω)}),

Î is the knowledge inertia matrix, [b{circumflex over (ω)}×] is a 3 by 3 matrix satisfying the equation

[b{circumflex over (ω)}×]h=bω×h 

for any vector h, i.e.,





  
    
      [
      
        
          
             
            b
          
          ⁢
          
            ω
            ^
          
        
        ×
      
      ]
    
    =
    
      [
      
        
          
            0
          
          
            
              -
              
                
                  v
                  ^
                
                3
              
            
          
          
            
              
                v
                ^
              
              2
            
          
        
        
          
            
              
                v
                ^
              
              3
            
          
          
            0
          
          
            
              -
              
                
                  v
                  ^
                
                1
              
            
          
        
        
          
            
              -
              
                
                  v
                  ^
                
                2
              
            
          
          
            
              
                v
                ^
              
              1
            
          
          
            0
          
        
      
      ]
    
  
  ,
  
    
      and
      ⁢
      
        
      
      ⁢
      
        
          ω
          ^
        
        3
        
        
          
            
          
          SPI
      
    
    ≡
    
      
        
          [
          
            0
            ,
            0
            ,
            
              
                w
                ^
              
              3
            
          
          ]
        
        
        T
        
          
          SPI
      
      .
    
  




Note that the derived measured spacecraft angular rate b ωm does not contain information regarding the spacecraft angular rate about the sun line; similarly, b{dot over (ω)}m does not contain information regarding the spacecraft angular acceleration about sun line.
The derivation of Eq. (6) is given below. Let the about-sun-line angular rate be SPIω3=SPI[0,0,ω3]T and let bω3=Cb_SPISPIω3. Then the spacecraft body frame acceleration contributed by the change of angular rate about the sun line is

b{dot over (ω)}3=[bω×]CSPISPIω3+CSPISPI{dot over (ω)}3.  (7)

Also let

b{dot over (ω)}12=b{dot over (ω)}−b{dot over (ω)}3  (8)

be the angular acceleration without the about-sun-line component. Combining Eqs. (7) and (8) gives

b{dot over (ω)}12=b{dot over (ω)}−[bω×]CSPISPIω3−CSPISPI{dot over (ω)}3  (9)

Equation (6) is then obtained from Eqs. (3) and (9).

To overcome any drift of the attitude estimate about the sun line, which cannot be detected by the sun sensor, the spacecraft total angular momentum in the SPI frame is calculated each time the estimate state is updated and the estimated quaternion is adjusted to maintain a fixed orientation of the total angular momentum.
Observability of About-Sun-Line Angular Rate Estimate Error
It can be demonstrated that error in the about-sun-line angular rate estimate, which cannot be detected by a sun sensor, is observable through the Euler equation:




  
    
      
        
          
             
            b
          
          ⁢
          
            ω
            .
          
        
        =
        
          
            
              
                ω
                .
              
              12
              
              
                
                  
                
                b
            
            +
            
              
                ω
                .
              
              3
              
              
                
                  
                
                b
            
          
          =
          
            -
            
              
                I
                
                  -
                  1
                
              
              ⁡
              
                [
                
                  
                    
                       
                      
                        
                      
                      b
                    
                    ⁢
                    ω
                  
                  ×
                  
                    I
                    ⁡
                    
                      (
                      
                        
                          
                            C
                            
                              b
                              ⁢
                              
                                
                              
                              ⁢
                              _
                              ⁢
                              
                                
                              
                              ⁢
                              SPI
                            
                          
                          ⁡
                          
                            [
                            
                              
                                
                                  
                                    w
                                    1
                                  
                                
                              
                              
                                
                                  
                                    w
                                    2
                                  
                                
                              
                              
                                
                                  0
                                
                              
                            
                            ]
                          
                        
                        +
                        
                          
                            C
                            
                              b
                              ⁢
                              
                                
                              
                              ⁢
                              _
                              ⁢
                              
                                
                              
                              ⁢
                              SPI
                            
                          
                          ⁡
                          
                            [
                            
                              
                                
                                  0
                                
                              
                              
                                
                                  0
                                
                              
                              
                                
                                  
                                    w
                                    3
                                  
                                
                              
                            
                            ]
                          
                        
                      
                      )
                    
                  
                
                ]
              
            
          
        
      
    
    
      
        (
        10
        )
      
    
  




From Equations (7) and (10), we have




  
    
      ω
      .
    
    12
    
    
      
        
      
      b
  
  =
  
    
      -
      
        
          I
          
            -
            1
          
        
        ⁡
        
          [
          
            
              
                 
                
                  
                
                b
              
              ⁢
              ω
            
            ×
            
              I
              ⁡
              
                (
                
                  
                    
                      C
                      
                        b
                        ⁢
                        
                          
                        
                        ⁢
                        _
                        ⁢
                        
                          
                        
                        ⁢
                        SPI
                      
                    
                    ⁡
                    
                      [
                      
                        
                          
                            
                              w
                              1
                            
                          
                        
                        
                          
                            
                              w
                              2
                            
                          
                        
                        
                          
                            0
                          
                        
                      
                      ]
                    
                  
                  +
                  
                    
                      C
                      
                        b
                        ⁢
                        
                          
                        
                        ⁢
                        _
                        ⁢
                        
                          
                        
                        ⁢
                        SPI
                      
                    
                    ⁡
                    
                      [
                      
                        
                          
                            0
                          
                        
                        
                          
                            0
                          
                        
                        
                          
                            
                              w
                              3
                            
                          
                        
                      
                      ]
                    
                  
                
                )
              
            
          
          ]
        
      
    
    -
    
      
        [
        
          
            
               
              b
            
            ⁢
            ω
          
          ×
        
        ]
      
      ⁢
      
        C
        
          b
          ⁢
          
            
          
          ⁢
          _
          ⁢
          
            
          
          ⁢
          SPI
        
      
      ⁢
      
        ω
        3
        
        
          
            
          
          SPI
      
    
    -
    
      
        C
        
          b
          ⁢
          
            
          
          ⁢
          _
          ⁢
          
            
          
          ⁢
          SPI
        
      
      ⁢
      
        
          ω
          .
        
        3
        
        
          
            
          
          SPI
      
    
  




In the above equation, b{dot over (ω)}12, w1 and w2 can be derived from sun sensor measurements. If the true w3 is constant and its estimate ŵ3 is incorrect, then the predicted value





  
    
      
        ω
        ^
      
      .
    
    12
    
    
      
        
      
      b
  
  =
  
    
      -
      
        
          
            I
            ^
          
          
            -
            1
          
        
        ⁡
        
          [
          
            
              
                 
                
                  
                
                b
              
              ⁢
              
                ω
                ^
              
            
            ×
            
              
                I
                ^
              
              ⁡
              
                (
                
                  
                    
                      
                        C
                        ^
                      
                      
                        b
                        ⁢
                        
                          
                        
                        ⁢
                        _
                        ⁢
                        
                          
                        
                        ⁢
                        SPI
                      
                    
                    ⁡
                    
                      [
                      
                        
                          
                            
                              w
                              1
                            
                          
                        
                        
                          
                            
                              w
                              2
                            
                          
                        
                        
                          
                            0
                          
                        
                      
                      ]
                    
                  
                  +
                  
                    
                      
                        C
                        ^
                      
                      
                        b
                        ⁢
                        
                          
                        
                        ⁢
                        _
                        ⁢
                        
                          
                        
                        ⁢
                        SPI
                      
                    
                    ⁡
                    
                      [
                      
                        
                          
                            0
                          
                        
                        
                          
                            0
                          
                        
                        
                          
                            
                              
                                w
                                ^
                              
                              3
                            
                          
                        
                      
                      ]
                    
                  
                
                )
              
            
          
          ]
        
      
    
    -
    
      
        [
        
          
            
               
              b
            
            ⁢
            
              ω
              ^
            
          
          ×
        
        ]
      
      ⁢
      
        
          C
          ^
        
        
          b
          ⁢
          
            
          
          ⁢
          _
          ⁢
          
            
          
          ⁢
          SPI
        
      
      ⁢
      
        
          ω
          ^
        
        3
        
        
          
            
          
          SPI
      
    
    -
    
      
        
          C
          ^
        
        
          b
          ⁢
          
            
          
          ⁢
          _
          ⁢
          
            
          
          ⁢
          SPI
        
      
      ⁢
      
        
          
            ω
            ^
          
          .
        
        3
        
        
          
            
          
          SPI
      
    
  




will be different from the measurable b{dot over (ω)}12, assuming all other variables in the equation are correct. This shows the observability of w3 and this is the reason why Eq. (6) is used as one of the predicted measurement functions to estimate the about-sun-line angular rate. Note that w3 is assumed to be constant, so SPI{circumflex over ({dot over (w)})}3 in Eq. (3) is zero.

Unscented Kalman Filter

The proposed sun sensor only attitude estimator expressed in Eqs. (2) is nonlinear with high non-linearity as shown in the propagation function, Eqs. (3) and (4), and the predicted measurement function, Eq. (6). Although extended Kalman filters have been commonly used for nonlinear systems, an extended Kalman filter can be unreliable for systems with severe non-linearity. Furthermore, the use of an extended Kalman filter requires the derivation of Jacobian matrices, i.e., the linearization of the propagation function and the predicted output function with respected to the estimator state, which can be extremely complicated for equations like Eqs. (3), (4) and (6). On the other hand, the unscented Kalman filter is suitable for highly nonlinear systems and it does not require the derivation of Jacobian matrices.
The unscented Kalman filter predicts probability distribution of the random state of a nonlinear function through behaviors of 2n points drawn from a prior distribution of the random state, where n is the dimension of the state. The unscented Kalman filter uses a deterministic sampling approach in which the state distribution is represented using a minimal set of selected sample points, called sigma points. The propagation and correction of an unscented Kalman filter (UKF) are performed on the sigma points {circumflex over (x)}k-1(i) around the UKF estimator state {circumflex over (x)}k-1+, where the subscript k-1 indicates the time instant.
FIG. 4 is a graph depicting an example wherein four sigma points {circumflex over (x)}k-1(1), {circumflex over (x)}k-1(2), {circumflex over (x)}k-1(3), and {circumflex over (x)}k-1(4) are positioned around the UKF estimator state {circumflex over (x)}k-1+. The distances between the estimator state {circumflex over (x)}k-1+ and the sigma points are defined by the error covariance Pk-1+ as follows:

{circumflex over (x)}k-1(i)={circumflex over (x)}k-1++{tilde over (x)}(i), where i=1, . . . ,2n; 

{tilde over (x)}(i)=(√{square root over (nPk-1+)})iT where i=1, . . . ,n; 

{tilde over (x)}(n+i)=−(√{square root over (nPk-1+)})iT where i=1, . . . ,n 

where (.)i means the i-th row and the dimension of {circumflex over (x)}k-1+ is n=5.

Propagation of Unscented Kalman Filter

The sigma points are propagated according to the discretized propagation function defined in Eqs. (3) and (4). The a priori estimate {circumflex over (x)}k−, i.e., the propagated estimate, is taken to be the mean of the propagated sigma points.




  
    
      
        x
        ^
      
      k
      
        (
        i
        )
      
    
    =
    
      
        f
        discretized
      
      ⁡
      
        (
        
          
            x
            ^
          
          
            k
            -
            1
          
          
            (
            i
            )
          
        
        )
      
    
  
  ,
  
    

  
  ⁢
  
    
      
        x
        ^
      
      k
      -
    
    =
    
      
        1
        
          2
          ⁢
          n
        
      
      ⁢
      
        
          ∑
          
            i
            =
            1
          
          
            2
            ⁢
            n
          
        
        ⁢
        
          
            x
            ^
          
          k
          
            (
            i
            )
          
        
      
    
  




The a priori covariance Pk−, i.e., the propagated covariance, is then calculated based on the distance between the sigma points and the propagated estimator state as shown below:




  
    P
    k
    -
  
  =
  
    
      
        1
        
          2
          ⁢
          n
        
      
      ⁢
      
        
          ∑
          
            i
            =
            1
          
          
            2
            ⁢
            n
          
        
        ⁢
        
          
            (
            
              
                
                  x
                  ^
                
                k
                
                  (
                  i
                  )
                
              
              -
              
                
                  x
                  ^
                
                k
                -
              
            
            )
          
          ⁢
          
            
              (
              
                
                  
                    x
                    ^
                  
                  k
                  
                    (
                    i
                    )
                  
                
                -
                
                  
                    x
                    ^
                  
                  k
                  -
                
              
              )
            
            T
          
        
      
    
    +
    
      Q
      
        k
        -
        1
      
    
  




In the above, Qk-1 is the error covariance associated with the propagation function.

Update of Unscented Kalman Filter

The unscented Kalman filter estimation process is depicted in FIG. 5. To compute the Kalman gain and to update the covariance, first the predicted measurements ŷk(i) based on the propagated sigma points {circumflex over (x)}k(i) are calculated according to the predicted measurement function given in Eq. (6). The mean of the predicted measurements is defined to be ŷk. The a posteriori covariance Pk+, i.e., the updated covariance, and the Kalman gain Kk are calculated based on the predicted outputs and their mean as follows:



  
    
      
        
          y
          ^
        
        k
        
          (
          i
          )
        
      
      =
      
        h
        ⁡
        
          (
          
            
              x
              ^
            
            k
            
              (
              i
              )
            
          
          )
        
      
    
    ,
    
      
        
          y
          ^
        
        k
      
      =
      
        
          1
          
            2
            ⁢
            n
          
        
        ⁢
        
          
            ∑
            
              i
              =
              1
            
            
              2
              ⁢
              n
            
          
          ⁢
          
            
              y
              ^
            
            k
            
              (
              i
              )
            
          
        
      
    
  




  
    
      P
      y
    
    =
    
      
        
          1
          
            2
            ⁢
            n
          
        
        ⁢
        
          
            ∑
            
              i
              =
              1
            
            
              2
              ⁢
              n
            
          
          ⁢
          
            
              (
              
                
                  
                    y
                    ^
                  
                  k
                  
                    (
                    i
                    )
                  
                
                -
                
                  
                    y
                    ^
                  
                  k
                
              
              )
            
            ⁢
            
              
                (
                
                  
                    
                      y
                      ^
                    
                    k
                    
                      (
                      i
                      )
                    
                  
                  -
                  
                    
                      y
                      ^
                    
                    k
                  
                
                )
              
              T
            
          
        
      
      +
      
        R
        k
      
    
  




  
    
      P
      xy
    
    =
    
      
        1
        
          2
          ⁢
          n
        
      
      ⁢
      
        
          ∑
          
            i
            =
            1
          
          
            2
            ⁢
            n
          
        
        ⁢
        
          
            (
            
              
                
                  x
                  ^
                
                k
                
                  (
                  i
                  )
                
              
              -
              
                
                  x
                  ^
                
                k
                -
              
            
            )
          
          ⁢
          
            
              (
              
                
                  
                    y
                    ^
                  
                  k
                  
                    (
                    i
                    )
                  
                
                -
                
                  
                    y
                    ^
                  
                  k
                
              
              )
            
            T
          
        
      
    
  




  
    
      
        K
        k
      
      =
      
        
          P
          xy
        
        ⁢
        
          P
          y
          
            -
            1
          
        
      
    
    ,
    
      
        P
        k
        +
      
      =
      
        
          P
          k
          -
        
        -
        
          
            K
            k
          
          ⁢
          
            P
            y
          
          ⁢
          
            K
            k
            
              -
              1
            
          
        
      
    
  



(See D. Simon, “Optimal State Estimation,” John Wiley & Sons, Inc., Hoboken, N.J., 2006.) In the above equations, Rk is the measurement noise covariance derived from the sun sensor noise variance. Finally, the a priori estimate is updated using the obtained Kalman gain and the sun sensor measurement ykm given in Eq. (2) to produce the a posteriori, or updated, estimate {circumflex over (x)}k+:

{circumflex over (x)}k+={circumflex over (x)}k−+Kk(ykm−ŷk).

FIG. 6 is a block diagram showing inputs to an unscented Kalman filter 18. The Kalman filter receives the sun unit vector bskm from the sun sensor 14 and the angular rates bωkm and angular accelerations b{dot over (ω)}km from a rate/acceleration estimator 16, which is part of the attitude estimator 6 shown in FIG. 1. The Kalman filter 18 is also part of attitude estimator 6.
Sun Acquisition
The sun-sensor-only attitude estimator disclosed herein is expected to be able to work with any attitude controller. In a paper entitled “Gyroless Transfer Orbit Sun Acquisition Using Only Wing Current Measurement Feedback,” AIAA Guidance, Navigation and Control Conference, Aug. 10-13, 2009 (the contents of which are incorporated by reference herein in their entirety), the authors showed that sun acquisition can be accomplished using the spin (i.e., attitude) controller introduced in that paper. That spin controller is capable of controlling spacecraft spin axis orientation and spin rate. The spin controller can be used to: (1) command a spacecraft to spin along its major or minor axis by changing the sign of the controller gain; and (2) command the spin axis orientation to line up with an inertial-fixed direction and rotate at a specified spin rate by using a momentum offset vector.
The foregoing spin controller, together with a Rate and Quaternion Estimator of the type disclosed herein, can be used to drive the spacecraft to achieve a sun acquisition maneuver using only sun sensor feedback, i.e., without the need of any other sensors. The output of the spin controller is a momentum command having the following structure:

bhctrl=kctrl(bÎb{circumflex over (ω)}×b{circumflex over (ω)})+bhoffset 

(bω=bωSPIb for notation simplification.) This spin controller can be used to command a spacecraft to spin along any of the three principal axes, including the intermediate axis if a matrix value of gain kctrl is used. The torque command applied to the spacecraft is bτctrl=−dbhctrl/dt; bhctrl is the momentum command; kctrl is the scalar controller gain; bÎ is the knowledge value of spacecraft inertia; and bhoffset is the offset angular momentum vector to command the spacecraft spin axis to a desired orientation and magnitude. The spin controller has the property that the spin axis will converge to the major axis when kctrl<0 and will converge to the minor axis when kctrl>0. In other words, the spin controller can be used to re-orient the spacecraft by simply changing the sign of its gain value.

The spacecraft total angular momentum is the sum of the reaction wheel angular momentum and the spacecraft angular momentum. Since the total angular momentum is fixed inertially, when the reaction wheel angular momentum changes, the spacecraft angular momentum needs to change accordingly to maintain a constant total angular momentum. To use the spin controller for sun acquisition, the reaction wheel offset angular momentum is selected such that when the spacecraft major or minor axis (depending on the sign of kctrl) is aligned with the spacecraft angular momentum vector, the solar panels will receive maximum current periodically at an appropriate angular rate.
Because a sun sensor does not provide information regarding spacecraft rotation about the sun line, any drift of the attitude estimate about the sun line cannot be detected. This drift can be prevented by applying the principle that the total angular momentum is fixed in inertial frame to the estimator design. The idea is to keep constant the angle between the X-axis of the SPI frame and the component of the estimated total angler momentum that is perpendicular to the sun line. (Note that Z-axis of the SPI frame is along sun line direction). An implementation of such idea is to add an arbitrary constant angle to the measurements ym as an additional element. The predicted angle is calculated from the predicted total angular momentum in the SPI frame, including the estimated angular momentum of the reaction wheel assembly and the estimated angular momentum of the spacecraft, converted to the SPI frame using the estimated attitude. To be exact, it is the angle between the SPI X-axis and the component of the predicted total angler momentum that is perpendicular to the SPI Z-axis.
Sun Acquisition Simulation
A sun acquisition simulation was run for the purpose of verifying the performance and robustness against uncertainties and sensor noise of a sun-sensor-only attitude controller employing an unscented Kalman filter. The spacecraft was assumed to have solar panels facing the ±Y axes, as shown in FIG. 7. There were two control objectives for the simulation: (1) make the spacecraft spin about its major axis, which is close to the X axis of the spacecraft body frame; and (2) make the spin axis perpendicular to the sun line so that the solar panels can see the Sun periodically and produce maximum peak current. The first objective was accomplished by choosing a negative controller gain. The second objective was accomplished by selecting an appropriate reaction wheel offset angular momentum.
The sun acquisition simulation was performed for the following two cases.
Case 1:
One simulation was run for the case of a 6 deg/sec initial rate estimate error with exact moment of inertia knowledge. The initial truth angular rate was 0.75 deg/sec about the Z axis of the spacecraft body frame; the final angular rate was 0.16 deg/sec about the X axis of the spacecraft body frame.
Case 2:
Another simulation was run for the case of 6 deg/sec initial rate estimate error with 2% moment of inertia knowledge error and 10 mdeg 3σ sun sensor noise. The initial angular rate was 1.25 deg/sec about the Z axis of the spacecraft body frame; the final angular rate was 0.27 deg/sec about the X axis of the spacecraft body frame.
Case 1 Results:
As shown in a paper entitled “Gyroless 3-Axis Sun Acquisition via Sun Sensors Only Unscented Kalman Filter Estimation”, AIAA Guidance, Navigation and Control Conference, Aug. 19-22, 2013 (the contents of which are incorporated by reference herein in their entirety), the simulation results showed that the spacecraft body rate started from Z spin and converged to X spin after the activation of the spin controller. In addition, the peak current converged to a maximum value. FIG. 8 shows that the spacecraft rate vector converged spirally to a vector (the straight line) perpendicular to sun line. The solid spiral indicates the path of the tip of a unit vector of ω in the SPI frame of reference. The symbol □ indicates the starting point; the symbol ▪ indicates the end point. The dash-dot curved line indicates the path of the tip of the Y axis of the SPI frame of reference.
Case 2 Results:
Case 2 results are also presented in detail in the paper entitled “Gyroless 3-Axis Sun Acquisition via Sun Sensors Only Unscented Kalman Filter Estimation”. The results were very similar to those of Case1. This demonstrated the robustness of the sun-sensor-only attitude estimator disclosed herein against uncertainty and sensor noise in a sun acquisition application.
In view of the foregoing, it should be apparent that three-axis attitude information can be obtained by using a sun sensor as the only attitude determination sensor and by application of the Euler equation. The attitude estimator disclosed above uses an unscented Kalman filter and uses a constant spacecraft total angular momentum vector in inertial coordinates as an additional attitude reference. The performance of the three-axis sun-sensor-only attitude estimator was verified by applying it to a sun acquisition operation. Simulations were performed and the results showed that the proposed estimator is able to generate with sufficient accuracy the about-sun-line angular rate estimate, which cannot be obtained from sun sensor measurements, and is robust against uncertainties and sun sensor noise.
The spacecraft three-axis angular rate information is needed for the control of the spacecraft orientation and attitude. Embodiments have been disclosed herein which use a relatively inexpensive sun sensor to generate the needed three-axis rate information without the need for a gyroscope or other expensive attitude sensors, such as star trackers.
The embodiments disclosed herein do not rely on accurate knowledge about the spacecraft inertia matrix and external disturbances. The innovative UKF formation allows the design to be robust against the knowledge uncertainty; i.e., good rate estimate can still be obtained when the spacecraft inertia matrix, disturbances, and initial rate are not known precisely. The mathematical expression of the UKF formulation and the simulation results (disclosed above) demonstrate the aforementioned robustness.
The system in accordance with some embodiments disclosed herein applies the principle of conservation of angular momentum in its innovative attitude estimator by using angular momentum as an additional reference to correct the attitude drift about the sun line. The requirement is that the angular momentum must have a non-zero component perpendicular to the sun line.
While exemplary embodiments have been disclosed herein, it should be appreciated that many variations are possible. It should also be appreciated that these exemplary embodiments are only examples, and are not intended to limit the scope, applicability, or configuration of the teachings herein in any way. Rather, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing various embodiments. Also it should be understood that various changes can be made in the functions and arrangements of elements disclosed herein without departing from the scope as set forth in the appended claims and the legal equivalents thereof.
As used in the claims, the term “computer system” should be construed broadly to encompass a system having at least one computer or processor, and which may have multiple computers or processors that communicate through a network or bus. As used in the preceding sentence, the terms “computer” and “processor” both refer to devices having a processing unit (e.g., a central processing unit) and some form of memory (i.e., computer-readable medium) for storing a program which is readable by the processing unit.
The method claims set forth hereinafter should not be construed to require that the steps recited therein be performed in alphabetical order or in the order in which they are recited. Nor should they be construed to exclude any portions of two or more steps being performed concurrently or alternatingly.

## Claims

1. A method of estimating a three-axis attitude of a spacecraft, comprising:
(a) measuring sun unit vectors at successive instants of time using a plurality of sun sensors attached to a spacecraft;
(b) calculating angular rates and angular accelerations of the spacecraft about first and second axes perpendicular to the sun line based on the sun unit vector measurements;
(c) calculating an angular acceleration of the spacecraft about the sun line using the sun unit vector measurements, a Euler equation and an unscented Kalman filter; and
(d) calculating a three-axis attitude of a spacecraft based on the calculation results in steps (b) and (c).

2. The method as recited in claim 1, wherein an estimator state of the unscented Kalman filter consists of a sun line spacecraft angular rate and a sun pointing inertial frame to spacecraft body frame quaternion.

3. The method as recited in claim 1, further comprising using a spacecraft total angular momentum vector as an attitude reference.

4. The method as recited in claim 1, further comprising calculating a spacecraft total angular momentum vector in a sun pointing inertial frame each time an estimate state is updated and adjusting an estimated sun pointing inertial frame to spacecraft body frame quaternion to maintain a fixed orientation of the total angular momentum.

5. The method as recited in claim 3, wherein a reaction wheel offset angular momentum is selected such that when a major or minor axis of the spacecraft is aligned with the spacecraft angular momentum vector, solar panels coupled to the spacecraft will receive maximum current periodically at an angular rate.

6. A spacecraft comprising a body, at least one solar panel coupled to said body, a plurality of sun sensors arranged on said body, and a computer system programmed with software configured to perform the following operations:
(a) measuring sun unit vectors at successive instants of time using a plurality of sun sensors attached to a spacecraft;
(b) calculating angular rates and angular accelerations of the spacecraft about first and second axes perpendicular to the sun line based on the sun unit vector measurements;
(c) calculating an angular acceleration of the spacecraft about the sun line using the sun unit vector measurements, a Euler equation and an unscented Kalman filter; and
(d) calculating a three-axis attitude of a spacecraft based on the calculation results in operations (b) and (c).

7. The system as recited in claim 6, wherein an estimator state of said unscented Kalman filter consists of a sun line spacecraft angular rate and a sun pointing inertial frame to spacecraft body frame quaternion.

8. The system as recited in claim 6, further comprising using a spacecraft total angular momentum vector as an attitude reference.

9. The system as recited in claim 6, wherein said computer system is further programmed to calculate a spacecraft total angular momentum vector in a sun pointing inertial frame each time an estimate state is updated and adjusting an estimated sun pointing inertial frame to spacecraft body frame quaternion to maintain a fixed orientation of the total angular momentum.

10. The system as recited in claim 9, wherein a reaction wheel offset angular momentum is selected such that when a major or minor axis of the spacecraft is aligned with the spacecraft angular momentum vector, solar panels coupled to the spacecraft will receive maximum current periodically at an angular rate.

11. A method of commanding a satellite to adjust its attitude to achieve sun acquisition, the method comprising:
(a) measuring sun unit vectors at successive instants of time using a plurality of sun sensors attached to a spacecraft;
(b) calculating angular rates and angular accelerations of the spacecraft about first and second axes perpendicular to the sun line based on the sun unit vector measurements;
(c) calculating an angular acceleration of the spacecraft about the sun line using the sun unit vector measurements, a Euler equation and an unscented Kalman filter;
(d) calculating a three-axis attitude of a spacecraft based on the calculation results in steps (b) and (c); and
(e) commanding changes in spacecraft attitude based on differences between a target three-axis attitude and said calculated three-axis rates.

12. The method as recited in claim 11, wherein an estimator state of the unscented Kalman filter consists of a sun line spacecraft angular rate and a sun pointing inertial frame to spacecraft body frame quaternion.

13. The method as recited in claim 11, further comprising using a spacecraft total angular momentum vector as an attitude reference.

14. The method as recited in claim 11, further comprising calculating a spacecraft total angular momentum vector in a sun pointing inertial frame each time an estimate state is updated and adjusting an estimated sun pointing inertial frame to spacecraft body frame quaternion to maintain a fixed orientation of the total angular momentum.

15. The method as recited in claim 11, wherein a reaction wheel offset angular momentum is selected such that when a major or minor axis of the spacecraft is aligned with the spacecraft angular momentum vector, solar panels coupled to the spacecraft will receive maximum current periodically at an angular rate.

16. A system for controlling the attitude of a spacecraft based on sun sensor measurements and not gyroscope measurements, comprising:
a spacecraft body;
at least one solar panel coupled to said body;
a plurality of sun sensors arranged on said body;
a control processor that outputs torque commands; and
means for producing torques that change the attitude of the spacecraft in response to torque commands from said attitude control processor,
wherein said control processor is programmed to perform operations in accordance with software comprising:
an attitude estimator for calculating a three-axis attitude and rate of said spacecraft body in a spacecraft body frame of reference based on sun unit vector measurements made by said plurality of sun sensors and a Euler equation; and
an attitude controller that outputs a torque command based on a difference between a target three-axis attitude and said calculated three-axis attitude and rate, and
wherein said attitude estimator comprises an unscented Kalman filter having an estimator state consisting of a sun line spacecraft angular rate and a sun pointing inertial frame to spacecraft body frame quaternion.

17. The system as recited in claim 16, wherein said torque-producing means comprise reaction wheels.

18. The system as recited in claim 17, wherein said control processor is further programmed to calculate a spacecraft total angular momentum vector in a sun pointing inertial frame each time an estimate state is updated and adjusting an estimated sun pointing inertial frame to spacecraft body frame quaternion to maintain a fixed orientation of the total angular momentum.

19. The system as recited in claim 18, wherein a reaction wheel offset angular momentum is selected such that when a major or minor axis of the spacecraft is aligned with the spacecraft angular momentum vector, solar panels coupled to the spacecraft will receive maximum current periodically at an angular rate.