Attitude Determination Using Two Vector Measurements

Many spacecraft attitude determination methods use exactly two vector measurements. The two vectors are typically the unit vector to the Sun and the Earth's magnetic field vector for coarse "sun-mag" attitude determination or unit vectors to two stars tracked by two star trackers for fine attitude determination. TRIAD, the earliest published algorithm for determining spacecraft attitude from two vector measurements, has been widely used in both ground-based and onboard attitude determination. Later attitude determination methods have been based on Wahba's optimality criterion for n arbitrarily weighted observations. The solution of Wahba's problem is somewhat difficult in the general case, but there is a simple closed-form solution in the two-observation case. This solution reduces to the TRIAD solution for certain choices of measurement weights. This paper presents and compares these algorithms as well as sub-optimal algorithms proposed by Bar-Itzhack, Harman, and Reynolds. Some new results will be presented, but the paper is primarily a review and tutorial. INTRODUCTION Suppose that we have measured two unit vectors bl and b2 in the spacecraft body frame. These can be the unit vectors to an observed object like a star or the Sun, or some ambient vector field such as the Earth's magnetic field. We consider only unit vectors because the length of the vector has no information relevant to attitude determination. Each of these unit vectors thus contains two independent scalar pieces of attitude information. The spacecraft attitude is represented by a 3x3 orthogonal matrix A, i.e. ArA = l, the 3×3 identity matrix. The attitude matrix must also be proper, i.e., it must have unit determinant, so it is an element of the three-parameter group SO(3). Euler's Theorem states that the most general motion of a rigid body with one fixed point is a rotation about some axis. This shows explicitly that SO(3) is a three-parameter group, since the three parameters can be taken as the rotation angle and two parameters specifying a unit vector along the rotation axis. Thus two unit vector measurements determine the attitude matrix, in general; in fact they overdetermine it. It is also necessary to know the components of the two measured vectors rl and r2 in some reference frame. The reference frame is usually taken to be an inertial frame, but this is not necessary. One can use a rotating frame such as the frame referenced to the orbit normal vector and the local vertical. The attitude matrix to be determined is the matrix that rotates vectors from the reference frame to the spacecraft body frame. Thus we would like to find an attitude matrix such that Ar 1 = b 1 (la) and Ar 2 = b 2. (lb) This is not possible in general, however, for equation (l) implies that bl .b2 = (All). (Ar 2) = rlrArAr2 = rlrrz = rI •r 2 . (2) This equality is true for error-free measurements, but is not generally true in the presence of measurement errors. It will be seen in the following that all reasonable two-vector attitude determination schemes give the same estimate when equation (2) is valid. It is clear from simple counting arguments that the two independent scalar pieces of information contained in a single vector measurement cannot determine the attitude uniquely. More concretely, if the attitude matrix A obeys equation (la), then so does the matrix R(bl,Ob)AR(r_,O,), for any 0b and ¢_r, where R(e,0) denotes a rotation by angle 0 about the axis e. This line of argument also makes it clear that the attitude matrix is not uniquely determined if either the pair b_ and b_ or the pair rl and r, are parallel or antiparallel. The earliest published algorithm for determining spacecraft attitude from two vector measurements was the TRIAD algorithm _':. This algorithm has been widely used in both ground-based and onboard 3attitude determination. The two vectors are typically the unit vector to the Sun and the Earth's magnetic field vector for coarse "sun-mag" attitude determination or https://ntrs.nasa.gov/search.jsp?R=1999005272