Flight results of GPS-based attitude determination for the Canadian CASSIOPE satellite

Correspondence A. Hauschild, German Aerospace Center (DLR), German Space Operations Center (GSOC), Weßling, Germany. Email: andre.hauschild@dlr.de Abstract The paper presents attitude determination results of the “GPS Attitude, Positioning and Profiling Experiment” (GAP) on board the CASSIOPE satellite using real flight data. The GAP payload consists of five minimally modified commercial-off-the-shelf NovAtel OEM4-G2L receivers that provide dualfrequency GPS measurements and allow for attitude and orbit determination of the satellite as well as electron density profiling. To the authors' knowledge, the CASSIOPE mission is the first space mission that provides dual-frequency observations for attitude determination. The data has been analyzed with a GPS attitude determination algorithm originally developed for the analysis of data from the “Flying Laptop” mission. The GPS-based solution for selected attitude maneuvers is compared to a reference orientation provided by the satellite's star sensors. Furthermore, an analysis of the typical time-to-first-fix (TTFF) for the attitude solution is provided. The advantage of dual-frequency ambiguity fixing compared to single-frequency is assessed.


INTRODUCTION
The paper presents attitude determination results of the "GPS Attitude, Positioning and Profiling Experiment" (GAP) 1,2 on board the CASSIOPE (CAScade, Smallsat and IOnospheric Polar Explorer) satellite using real flight data. CASSIOPE is a Canadian satellite that was launched on 29 September 2013 into an elliptical, near polar orbit. The current perigee height is approximately 328 km and the apogee height about 1294 km. The satellite is equipped with eight scientific payloads for space weather studies, known as the Enhanced Polar Outflow Probe or e-POP, and a commercial technology demonstrator payload for broadband communications services. Since February 2018, when it joined ESA's Swarm mission, CASSIOPE is also known as Swarm-E.
The GAP payload consists of five minimally modified commercial-off-the-shelf NovAtel OEM4-G2L receivers that provide dual-frequency GPS measurements. Four of the receivers are each connected to a Sensor System S67-1575-14 patch antenna, mounted on the zenith face of the satellite. Together, this four-antenna, four-receiver system is known as GAP-A. The measurements of these receivers allow for attitude and orbit determination as well as measuring the total electron content above the spacecraft. The fifth receiver is connected to a re-housed NovAtel GPS-702 antenna used for occultation measurements and known as GAP-O. The left picture in Figure 1   of the GAP antennas and the satellite's body-fixed coordinate system are shown in the right picture of Figure 1.
The receivers provide GPS pseudorange, carrier phase, Doppler frequency shift, and carrier-to-noise-density ratio (C/N 0 ) observables for GPS L1 C/A and the L2 P(Y) signals typically at a 1-Hz rate. 4 Due to onboard memory restrictions, not all GAP receivers are operating continuously but instead are activated on demand depending on an experiment and mission planning schedule. The data used in this study have been collected between January 2015 and September 2018. During this time period, only the receivers connected to the patch antennas GPS-0, GPS-1, and GPS-2 have been periodically activated simultaneously. The lengths of the data sets are typically between a few tens of minutes to about 100 minutes.
Besides observation data from the GAP receivers, auxiliary data for the satellite orbit and attitude determination have been used. The GPS-based attitude solution has been compared to a reference solution provided as yaw, pitch, and roll Euler angles based on the satellite's Micro Advanced Stellar Compass (μASC) star sensors of the Danish Technical University (DTU), which provide an attitude knowledge of 2 ′′ (3 ). 5 The first GPS-based attitude determination experiments in space were conducted using the Trimble TANS Vector receiver on board NASA's RADCAL satellite in 1993. 6,7 While these measurements were analyzed post facto, onboard processing in real time was already done for the Shuttle Pallet Satellite (SPAS) CRISTA in the following year. 8 This mission was soon followed by NASA's APEX mission 9 and the REX-II mission. 10 The latter employed the first closed-loop GPS attitude control system. In 1998, the Argentinian satellite SAC-A was launched with a GPS-based autonomous attitude determination experiment. 11 The GANE experiment operated on the Space Shuttle 12 led to the installation of a GPS attitude determination system on board the International Space Station (ISS). 13 Other satellite missions featuring GPS attitude determination were UoSAT-12, 14 TopSat, 15 and Flying Laptop. 16 For a comprehensive overview of GPS attitude determination for other non-space related applications, the reader is referred to Giorgi. 17 To the authors' knowledge, the CASSIOPE mission is the first space mission that provides dual-frequency observations for attitude determination. The data have been analyzed with a GPS attitude determination algorithm originally developed for the analysis of data from the "Flying Laptop" mission. 16,18 The paper presents attitude determination results for real flight data from the GAP experiment on the CASSIOPE satellite. The GPS-based attitude solution is compared to a reference attitude provided by the satellite's star sensors. This procedure allows a direct assessment of the achievable accuracy for typical satellite attitude orientations and maneuvers of the CASSIOPE mission. Results for single and dual-frequency processing are compared. Furthermore, the analysis focuses on determining the typical time-to-first-fix (TTFF) of the single-difference ambiguities for each baseline. The advantages of dual-frequency ambiguity fixing compared to single-frequency are assessed, considering also the occasional occurrence of half-cycle ambiguities.

ATTITUDE DETERMINATION ALGORITHM
The following elements are parameterized in the state vector of the attitude filter: two baseline vectors (b 1 , b 2 ) in the Earth-centered Earth-fixed (ECEF) reference frame, two differential receiver clock offsets ( t 1 , t 2 ), one angular velocity vector for the satellite rotation, and a vector of single-difference carrier-phase ambiguities for each baseline and frequency (A 1,L1 , A 1,L2 , A 2,L2 , A 2,L2 ). The state vector of the Extended Kalman Filter (EKF) is then (1) Assuming constant angular velocity and ambiguities as well as a white noise model for the differential receiver clock offsets, the equation of motion reduces to A flowchart of the attitude estimation filter is provided in Figure 2. The algorithm starts with an initialization of the Kalman-filter state vector and co-variance matrix. Since the baseline vectors are estimated in the ECEF frame, an initial attitude orientation must be assumed. By default, Earth-pointing orientation is assumed, where the satellite's +z-axis points to the center of the Earth and the y-axis is aligned with the orbit normal plane. The baseline vectors are assumed to be only reoriented due to the rotational motion of the satellite. Therefore, only one common angular velocity vector is estimated, and no process noise is applied during the state propagation for the baseline vectors. The covariance of the baseline vectors is initialized with an initial standard deviation 0 of 2 m to reflect the uncertainty in these parameters when the satellite orientation is unknown.
The differential receiver clock offset is modeled as a white noise process, with a 0 of 1.0 μs. In the case of a white noise parameter, no information is carried on from the previous epoch during the state update, and the standard deviation of the parameter is reset to 1.0 μs at each epoch. This is a valid model, since the receivers control their clock error to better than 1.0 μs with respect to GPS time. 19 The clock synchronization is also a prerequisite for being able to form single-difference measurements. The angular velocity vector is modeled as a random walk process with an initial standard deviation of 1.0 • /s and a process noise standard deviation of 0.03 • /s over a time interval of 1 second. The ambiguities are also treated as constant parameters with an initial standard deviation of 500 cycles that is quickly reduced after the first measurement update using code and phase measurements. Table 1 provides an overview of the Kalman-filter measurement noise and process noise settings used for processing the GAP data. A standard deviation of 30 cm is used for the single-difference pseudorange measurements. The single-difference carrier-phase measurements are processed with a standard deviation of 3 mm. Identical noise is assumed for both frequencies and no elevation-angle-dependent observation weighting is used.
After initialization, the Kalman-filter cycle is started. The first step in the update cycle is the data quality control (QC) to reject corrupted data from entering the filter measurement update. First, the elevation angle of each GNSS satellite is computed with respect to the LEO satellite's local horizon. If the elevation angle is below a predefined threshold, the measurements of this satellite are rejected. Optionally, the elevation angle test can also be done relative to the satellite's antenna frame, which requires a valid attitude estimate from previous epochs. This test is therefore only applied when the ambiguities on both baselines have been fixed successfully. However, for the GAP data processing, it has been found that the best compromise between fast ambiguity resolution and lowest attitude estimation errors is achieved by first using all available observations, also including satellites with negative elevation angles with respect to the local horizon and the antenna frame, until ambiguities are fixed. Then, to ensure high attitude estimation accuracy, measurements of satellites below the local antenna frame that are typically affected by large multipath errors are rejected.
The carrier-to-noise-density ratio (C/N 0 ) measurement for each signal is also used. All observations on a signal with low C/N 0 are rejected. Separate editing limits are used for L1 C/A and L2 P(Y). The editing limits are summarized in Table 2.
In the last step of the quality control algorithm, time differences of pseudorange and carrier-phase double-difference observations (triple-differences) are formed for each individual satellite. The absolute value of each triple-difference is then compared to a test threshold, and the observation is rejected if the threshold is exceeded. This editing procedure is possible due to the high data rate of the receivers and the low angular velocity of the CASSIOPE satellite, which only causes a small effect in the triple-difference due to the geometric change in the baseline. In this editing step, pseudorange jumps and carrier-phase cycle-slips are detected. If cycle-slips are detected, the corresponding ambiguities are newly initialized as float values based on code-carrier differences.
The next step is the measurement update. The Kalmanfilter processes both pseudorange and carrier-phase observations. It can be configured to use single-frequency measurements from any number of signals. In the case of CASSIOPE, it can process only L1 C/A, only L2 P(Y), or both signals together. No combination is formed when processing more than one frequency. Instead, measurements from the different frequencies are treated as independent and complementary observations. The ionospheric delay does not need to be estimated since it cancels out in the differencing over the short baselines. Using both L1 C/A and L2 P(Y) is a particularly interesting option, since observations on a second frequency with different wavelength are available. This facilitates fast ambiguity resolution after filter initialization when the initial orientation of the spacecraft is not known.
In case float ambiguities are present for a baseline in the filter, the algorithm enters the ambiguity-fixing branch. For ambiguity resolution, double-differences are formed from the float single-difference ambiguities and their associated covariance matrix. Integer values for the double-difference ambiguities are then determined with the modified LAMBDA method (MLAMBDA). 20,21 If the outcome passes a validation test, it is used to constrain the single-difference ambiguities in the filter with a "pseudo"-measurement update. In this update, the resolved double-difference ambiguities are used as observations with zero variance.
The validation of the ambiguities is done by computing single-epoch solutions for the baseline with the newly fixed ambiguities. The length of the estimated baseline vector is then compared to the expected length. If both agree to within a predefined threshold, the ambiguities are accepted. The maximal baseline length difference threshold is listed in Table 2. The validation test is necessary to prevent fixing the ambiguities to wrong values, since systematic errors, like multipath or adverse observation geometry over short data intervals may prevent the MLAMBDA method from resolving the ambiguities correctly. If the ambiguity resolution was not successful, another attempt is done after the next measurement update. 16 After each measurement update and ambiguity fixing attempt, satellite attitude information is retrieved from the two baseline vectors with the Tri-axis Attitude Determination (TRIAD) 22 or Quaternion Estimation (QUEST) method. 23 With the observed baseline vectors in the ECEF reference frame and their known counterparts in body-fixed (BF) coordinates, TRIAD or QUEST compute the orientation between these two coordinate frames. With the known orientation of the Earth at the observation epoch, the attitude between the Earth-fixed Inertial (ECI) frame and the BF-frame can be computed.
The TRIAD method computes the attitude such that one vector estimate, preferably the more precise one, determines two rotational degrees of freedom whereas the other vector only determines the remaining angle. The QUEST algorithm computes an optimal attitude solution using two or more vector estimates and their corresponding weights. For processing the CASSIOPE data, the QUEST algorithm with fixed weights depending on the baseline vector length has been used. Since both baselines have almost the same length, the weights are virtually identical. If the CASSIOPE satellite is in nominal Earth-pointing mode with the front panel facing forwards, the baseline vector between the antennas GPS-0 and GPS-2 determines the pitch angle and the baseline between GPS-1 and GPS-2 determines the roll angle. Both baselines contribute to the yaw orientation.
The last step in the Kalman-filter cycle is the propagation of the filter state and co-variance to the next epoch. The equation of motion is provided in Equation (2). It is integrated over the interval Δt = t k+1 − t k between the measurement epochs using a fixed step Runge-Kutta integrator. After the propagation step, the algorithm continues with the quality control of the observations for the next epoch.

ANTENNA BASELINE CALIBRATIONS
The accuracy of the GPS-based attitude determination is mainly driven by the quality of the carrier-phase observations and measurement model. The main sources of error for these observables are receiver measurement noise and multipath errors. Furthermore, incorrect modeling of the baseline vectors due to disregarded antenna phase center offsets (PCOs) and phase center variations (PCVs) affects the estimated parameters. Whereas the stochastic errors like measurement noise can be filtered out with proper settings of measurement noise and process noise in the Kalman filter, non-stochastic effects like multipath, PCOs, and PCVs will cause the solution to be biased and exhibit systematic errors. In the following sections, the procedure and results of the PCO and PCV calibrations are presented.

Calibration of baseline vectors
In a first step, the a priori baseline vector coordinates are improved using in-flight data together with the satellite's reference attitude. For this purpose, a large number of data sets with the CASSIOPE satellite in Earth-pointing attitude orientation have been selected in order to achieve best coverage of the entire field-of-view of the antenna. In total, 195 data sets from January to September 2018 with dual-frequency data have been processed, each between approximately 45 and 100 minutes long. Contrary to the settings in Table 1, which are used for routine processing, process noise has also been used for the baseline vector during the calibration to achieve estimates in kinematic mode and make them statistically independent. The epoch-wise baseline vector estimates have been converted from ECEF-coordinates to BF-coordinates using the ref-erence attitude solution and a weighted average has been computed over all epochs.
The calibration results are summarized in Table 3. The a priori baseline vector coordinates have been extracted from technical drawings of the satellites. It becomes obvious that the calibrated coordinates differ by up to approximately 8 mm from these initial values for the geometric antenna baseline. It should be noted that a coordinate error of approximately 9 mm orthogonal to a baseline of 1 m length leads to an angular error of approximately 0.5 • . It is also interesting to note that antenna GPS-0 and GPS-1 both exhibit a shift of about 6 mm in the negative z-direction with respect to antenna GPS-2, which reflects the impact of the different antenna mounting on the effective phase center location.
Differences between the a-priori differential antenna coordinates and the calibrated coordinates result from the fact that the electrical antenna phase center does not necessarily coincide with the mechanical center of the patch antenna and its exact location is affected by the material in its vicinity. Even if all antennas were mounted with the same orientation, different mounting geometries will cause different shifts in the antenna phase center. It should also be noted that the average effect of multipath errors will affect the estimated baseline vector. In the case of CAS-SIOPE, the antennas are mounted on fixtures that keep the solar array at an offset from the top panel of the main satellite body structure. Two patch antennas are embedded into the solar panel array; the other two protrude to the side. As a result, a different mean effect of multipath reflections can be expected for each antenna.
It should further be noted that the phase center offsets for the L1 and the L2 signals typically also do not coincide. Therefore, the baseline vectors in Table 3 represent an averaged phase center offset of L1 and L2. This inconsistency will be resolved in the next calibration step, where frequency-dependent phase center variation corrections are computed. These azimuth-and elevation-angle-dependent corrections will also absorb the PCO differences between the L1 and L2 signals.

Calibration of phase center offsets and variations
The azimuth-and elevation-angle-dependent differential antenna phase-center variation corrections have been computed based on the same data sets as for the base-

TABLE 3 Mean a priori and calibrated baseline vector
coordinates expressed in the body-fixed coordinate system in Figure 1 based on single-difference L1 and L2 measurements. The last row contains the baseline vector coordinate uncertainties. All values are in imm line calibration, this time using the calibrated baseline vectors. At each epoch, the single-difference carrier-phase residuals for each frequency and both baselines are computed and stored together with the corresponding azimuth and elevation angle data with respect to the antennas' local reference system. Then, based on the results of all data sets, the averaged residuals for azimuth-and elevation-angle-bins are computed and stored as a look-up table with a step size of 1.0 • for elevation angle and 2.5 • for azimuth. After the computation of the initial phase-center variation map, the entire procedure is repeated for several more iterations, where the PCV map of the previous iteration is used for the computation of the residuals and then also as a priori information for the computation of an updated PCV map. The resulting phase-center variation maps for the antenna combination GPS-0/GPS-2 and GPS-1/GPS-2 are depicted in Figure 3 for L1 and Figure 4 for L2. Due to the large field-of-view and the availability of low elevation angle observations, the calibrations have been performed down to an elevation angle of 0.0 • . It becomes obvious from the plots that the phase-center variation maps look dissimilar for both antenna pairs and also for the different frequencies. The variations range from −25 mm to 25 mm. Note that the same scale has been used for all plots. The variations are slightly larger on the L2 frequency. As already mentioned in the previous section, the phase center variation correction maps also include the effect of the different L1 and L2 mean phase center offset. Furthermore, multipath errors are also included in the calibrated patterns, since the reflections originate from the satellite structure and are thus static with respect to the local antenna frame.
By calibrating the baseline vectors and the PCOs and PCVs, systematic errors in the attitude solution are removed and thus offsets and biases are reduced. However, the calibration of the baseline vectors requires external precise attitude knowledge, in this case, the star sensor data. As a result, the GPS-based attitude result is calibrated to better fit the reference orientation provided by the satellite's attitude determination system. If the GPS data were used as the primary precise attitude sensor, the baseline calibration would not be feasible and biases will remain in the solution. The only possible options are ground calibrations of the flight unit or an identical engineering model with either live data or measurements in an anechoic chamber. It is unclear though whether these ground calibrations are feasible and if they yield representative results.
It should also be noted that the limitation of the phase-center variation correction map to positive elevation angles with respect to the local antenna reference system poses a problem with satellites tracked at negative elevation angles. Including them in the attitude solution without phase center corrections may introduce significant modeling errors, especially since the variations tend to be larger for smaller elevation angles. On the other hand, these observations may contain valuable geometric information, especially for ambiguity resolution. It has therefore been chosen to include all satellites with valid observations in the processing as long as a baseline is not fixed. As soon as a fix is achieved, observations without PCV corrections are excluded. This compromise facilitates faster ambiguity resolution and ensures that only high quality observations are used once the ambiguities are resolved. A differential phase center variation calibration for negative elevation angles has not been attempted due to the low availability of measurements.

ATTITUDE DETERMINATION TEST CASES
The CASSIOPE attitude determination results are assessed with different test cases. First, the satellite is in Earth-pointing orientation and the baselines are estimated in kinematic mode. Afterwards, the satellite performs attitude maneuvers and the filter's process noise settings are chosen to reduce the noise in the estimated parameters.

Earth-pointing orientation
In order to verify the consistency of the observations and the model adopted for the GAP data, a data set with CAS-SIOPE in Earth-pointing orientation is processed. For this test case, the baselines are estimated in kinematic mode, ie, each baseline is applied with a process noise of 100 cm per 1 second for each component and the common angular velocity is not estimated. As a result of these filter settings, the motion of the baseline vectors from epoch to epoch is only loosely constrained. Data between 12:20h UTC and 14:06h UTC on 6 June 2018 have been selected. The pseudorange residuals are zero mean with a standard deviation of 34.8 cm and the carrier-phase residuals are 3.67 mm, which fits well with the values for the measurement noise in Table 1. The Euler angle errors with respect to the star sensor reference solution are −0.11 • ±0.08 • for yaw, −0.10 • ±0.32 • for pitch, and −0.14 • ±0.26 • for roll. The Euler angle error results are depicted in Figure 5.
In Earth-pointing orientation, the baseline GPS-0/-2 determines the pitch angle and the baseline GPS-1/-2 determines the roll angle. Both baselines contribute to the yaw angle estimate. The standard deviations of the horizontal and vertical baseline errors H and V can be approximated using the following relationship between the DOP and the carrier-phase standard deviation Φ : where using HDOP yields the horizontal errors and VDOP yields the vertical errors. These baseline errors then translate into yaw, pitch, and roll Euler angle errors = arcsin and p,r = arcsin where b is the length of the baseline vector. The horizontal error determines the yaw-angle error, while the pitch and roll errors are governed by the vertical errors. The average horizontal and vertical dilution of precision  (HDOP/VDOP) for the test data set is shown in Table 4 together with the expected position error standard deviation ( H , V ) and expected Euler-angle standard deviation ( , p , r ) according to Equations (3) and (4) using Φ of Table 1. It becomes obvious that the expected Euler-angle standard deviations resulting from the vertical baseline errors agree reasonably well with the errors in the estimated pitch and roll angles. The error in the estimated yaw angle is significantly better compared to what would be expected from the horizontal baseline errors. However, it must be kept in mind that both baselines contribute to this parameter through the QUEST algorithm.

Attitude maneuvers
Next, the achievable accuracy of the GPS-based GAP attitude determination is demonstrated using two examples where the satellite is performing attitude maneuvers. In both cases, the satellite's orientation deviates significantly from the nadir-pointing orientation, which typically provides the best visibility conditions with respect to the GPS constellation. For this analysis, the calibrated baseline vectors and the PCV correction maps are used together with dual-frequency observations. The process noise and measurement noise settings are selected according to Table 1. Contrary to the results in the previous section, no process noise is applied to the baseline states and a common angular velocity vector is estimated.
The first example is a slew maneuver predominately in yaw and roll that starts at 7:10h UTC on 12 August 2017. The results are depicted in the top plot of Figure 6. The GAP receivers are activated when the satellite is already in a yaw rotation of about −27 • and a roll rotation of about 11 • . The pitch angle is close to zero. During the first 5 minutes of the maneuver, the satellite quickly rotates about the yaw axis and then ends up with a yaw orientation of −178 • . The roll and pitch angles change to 86 • and −27 • during the maneuver until the receivers are deactivated again at 07:27h UTC.
The GPS-based attitude solution exhibits small biases of approximately 0.13 • for yaw and roll, 0.09 • for pitch, and −0.13 • for roll. The standard deviation of the yaw attitude error is 0.12 • . Pitch and roll errors have a larger noise with a of approximately 0.20 • . The attitude estimation achieves instantaneous ambiguity resolution for both baselines at the first epoch using dual-frequency observations. It also becomes obvious from the plot that the short-term noise in the Euler angle estimates is significantly reduced compared to the kinematic estimation results in the previous section.
The second example shown in the bottom plot of Figure 6 is a pitch maneuver starting at about 16:31h UTC on 6 June 2018. At this point in time, CASSIOPE leaves the Earth-pointing orientation and builds up a pitch angle of about 50 • within one minute. Over the following minutes, the satellite gradually reduces the pitch angle to −40 • while the yaw and roll angles stay close to zero. The GAP receivers are switched off at 16:42h UTC and no more data are available. The yaw and roll angles exhibit an offset of −0.14 • , whereas the pitch bias is −0.06 • . The yaw angle noise amounts to 0.05 • and is lower compared to the previous test case. The pitch and roll error standard deviation is similar to the previous example and amounts to 0.24 • and 0.19 • , respectively.
An interesting observation can be made in this data set: the pitch errors exhibit a bias of up to −1.0 • when the satellite starts its pitch rotation at around 16:32h UTC and the angular velocity vector changes rapidly. This indicates that the selected process noise for this state vector element is too small for this particular test case and thus the Kalman-filter cannot follow the dynamics quickly enough and lags the true attitude. Increasing the process noise for the angular velocity, on the other hand, will enable the filter to follow fast attitude changes more quickly but also filter less of the measurement errors and increase the noise in the baseline estimates and, consequently, the attitude estimates.

TIME-TO-FIRST-FIX OF ATTITUDE SOLUTION
The availability of dual-frequency GPS data in combination with a large number of different test data sets allows us to assess the time-to-first-fix (TTFF) of the attitude solution. For this purpose, 20 short data sets between November 2015 and July 2018 have been selected, when the GAP receivers are activated with the CASSIOPE satellite pointing off-nadir and slowly slewing back to Earth-pointing orientation. An attitude determination has been performed for each of the test cases and the Kalman filter has been initialized at the first epoch of the data set assuming Earth-pointing orientation. The necessary time from filter initialization until the first fix of each baseline vector has then been evaluated for dual-frequency data as well as L1-only and L2-only processing. The settings in Table 1 have been used for the Kalman filter and all tracked satellites with valid observations have been used for the ambiguity resolution attempt irrespective of the availability of PCV corrections.
The plot in Figure 7 depicts an example for a slew maneuver from an off-nadir pointing back to Earth-pointing orientation. The initial yaw, pitch, and roll offsets are 12.0 • , 46.9 • , and 9.3 • , respectively. The example is the tenth test case in Table 5, where instant ambiguity resolution is achieved with dual-frequency measurements. Table 5 shows the initial yaw, pitch, and roll angles for each test case as well as the time-to-first-fix for L1 and L2, L1-only, and L2-only processing. The last two rows contain the percentage of instant ambiguity resolutions (ie, zero TTFF) and the average TTFF excluding the instant fixes.
The results show that the ambiguities can be fixed instantly with dual-frequency data in 90% of the test cases for the antenna pair GPS-0/-2 and 85% for antenna pair GPS-1/-2. The average time until ambiguity resolution excluding the instant fixes is 9.0 and 3.3 seconds, respectively, for L1+L2. When only single-frequency data are used, the percentage of instant fixes decreases dramatically. Single-epoch ambiguity fixing is only possible in 50% and 40% of the cases for the two baselines for L1-only. The average TTFF increases to 18.2 and 19.4 seconds in this case. When using only L2 observations, single-epoch fixing is possible in 75% and 50% of the cases, which is slightly higher compared to L1-only. Also, the average TTFF decreases to 7.2 seconds and 10.9 seconds. The test results clearly show the advantage of dual-frequency data for ambiguity resolution due to the long wide-lane combination wavelength of 86 cm. It is also interesting to note that using only L2 observations leads to an improvement in the average time to first fix compared to using only L1. This is an expected result, since the carrier-phase observations on L2 have a wavelength of 24 cm, which is larger than the L1 wavelength of 19 cm.

SUMMARY AND CONCLUSIONS
The paper presents the first published attitude determination results of the Canadian research satellite CAS-SIOPE, which is equipped with multiple antennas and dual-frequency L1/L2 GPS receivers. The attitude estimation has been performed using an algorithm that was initially developed for the "Flying Laptop" satellite mission and has been adapted to be able to process multi-frequency GPS measurements. The estimated attitude results are compared with the satellite reference attitude solution based on star sensor data.
First, the a priori antenna baseline vectors, retrieved from technical drawings of the satellite, are calibrated with in-flight data. The calibration yields corrections on the order of several millimeters in all three vector components. Next, separate L1 and L2 antenna phase center variation corrections are derived for each antenna combination. These corrections reach a peak-to-peak amplitude of 50 mm and also compensate for different phase center offsets as well as multipath errors on L1 and L2. The derived patterns significantly differ for the two antenna pairs and the different frequencies.
Selected attitude determination test cases demonstrate that attitude errors have biases of about 0.1 • and noise of less than 0.3 • compared to the star sensor based reference attitude of the spacecraft. Tests of the time-to-first-fix of the attitude solution clearly showed that dual-frequency data enables instantaneous ambiguity fixes for the majority of the test cases even if the satellite attitude significantly differs from Earth-pointing orientation. The performance significantly reduces when only L1 or L2 observations are used.