## 1.

## Introduction

High-accuracy telescope pointing and tracking is required for many applications, such as astronomy, space situational awareness, and optical communication. A telescope control system relies on a pointing model to determine the gimbal angles to point toward a desired target. The pointing model is at the core of the “virtual telescope” concept. This concept was proposed in the 1970s by the designers of the Anglo-Australian Telescope,^{1}^{,}^{2} and it allows for modular and user-friendly control system software. A “virtual telescope” module behaves as a perfect telescope and the messy transformations and corrections needed to point the physical telescope are contained within it. High-accuracy telescope pointing models include parameters that describe the mount/telescope orientation as well as common static and dynamic mechanical effects.

The block diagram in Fig. 1 summarizes the basic pointing problem. The inputs to the pointing model are the current time, location, target vector in the inertial frame, and the desired target vector in the detector frame. Though the astrometric and detector models that go into producing the target vectors are nontrivial, they are not the focus of this work and we assume that the appropriate target vectors have been calculated. The pointing model consists of a series of rotations that relate the inertial frame to the detector frame, and the gimbal angles appear within these rotations. If a trajectory is desired, gimbal rates can be determined by differentiating the pointing model equations.

There are two mathematically different approaches to developing the pointing model. A simple approach is to determine the gimbal angles for an ideal telescope and then apply small additive corrections to generate the commanded gimbal angles. A more rigorous approach is to pose the full problem in matrix/vector form and solve these equations for the commanded gimbal angles.^{3} The simplified approach is sufficient for small corrections but ignores the coupling between corrective terms.

The original TPOINT developer Wallace^{1} proposed a condensed seven-term pointing model.^{3} While prior models had many terms, in which each applied a linear correction $[\mathrm{\Delta}\mathrm{Az},\mathrm{\Delta}\mathrm{El}]$ to the commanded mount angles, the revised model is based on a more rigorous matrix/vector formulation. Wallace^{4} also provided a very simple pointing model that produces linear corrections based on the seven terms. The pointing model for the Massachusetts Institute of Technology (MIT) 37-m diameter Haystack antenna, which predates TPOINT, also used a seven-term model with a slightly different formulation.^{5} A six-term model (excluding a term for vertical deflection of the telescope) has been proposed that can be calibrated with star sightings or with an autocollimator and precision calibrated gimbal setup.^{6}

Professional software such as TPOINT is effective for fixed telescopes in observatories. However, for some applications, faster calibration is desirable, such as portable telescopes for optical communications.^{7} Additionally, many low-cost telescopes have incremental rather than absolute encoders. These telescopes require recalibration after every power cycle as the zero position is reset. They commonly have a built-in calibration procedure that requires sighting a few stars, but it is insufficient for applications, where better than several arc min of accuracy is required. Improving the pointing and tracking accuracy of low-cost hardware enables its use for applications in space situational awareness and astronomy. Low-cost hardware is particularly valuable to enable large-telescope networks.

To enable rapid calibration while maintaining high accuracy, we formulate a quaternion-based pointing model that utilizes measurements from an externally mounted star camera. Star cameras are used frequently in spacecraft to determine their orientation. By taking an image of a portion of the sky and comparing the relative positions of observed stars against a catalog of known stars, the observed stars can be identified to provide a unique orientation solution. The solution is typically in the form of a quaternion. Quaternions are a useful representation of orientation that avoids the possibility of a mathematical singularity known as gimbal lock (refer to Appendix for more detail on quaternions).

The calibration builds-off of the work in Ref. 8 and is augmented to include additional pointing model terms that account for gimbal nonperpendicularity and vertical deflection of the telescope. These additional terms improve calibration residuals by 70%, from 150 arc sec root-mean-square (RMS)^{8} to 45 arc sec RMS, on the telescope setup described in Sec. 4. A key aspect of our formulation is that it is completely agnostic to the initial orientation of the telescope/mount so that no manual alignment (e.g., leveling) is needed. Even the type of mount (e.g., equatorial) does not need to be specified to the software, as long as it is has two nominally perpendicular gimbal axes. The quaternion-based formulation provides a rigorous approach that enables direct use of star camera measurements.

There are three key benefits of the pointing model formulation presented in this work as compared to existing approaches: (1) the 10-parameter model is tailored for use with a star camera to greatly speed up calibration while maintaining accuracy, (2) the pointing model makes no assumptions about the mount type or orientation, which minimizes manual set up time, and (3) the gimbal angle and rate commands are derived analytically from the pointing model for completeness.

We describe the approach to calibrate the pointing model using a star camera. We present the analytically derived angle and rate commands for telescope pointing and tracking. We present results from a 15-min calibration procedure on a low-cost telescope that demonstrated an accuracy of 85 arc sec RMS on 15 stars between 20-deg to 70-deg altitude. This procedure demonstrates the algorithm’s functionality in practice, but the pointing performance depends heavily on the quality of the telescope and hardware. The results are meant to serve as an example but not as a lower or upper bound for algorithm performance.

## 2.

## Pointing Model

In this section, we present the pointing model formulation and how the pointing model can be applied to generate gimbal angle and rate commands. The calibration of the terms in the pointing model is covered in Sec. 3.

## 2.1.

### Reference Frames

The reference frames relevant to the derivation of the pointing model are defined in this section. They are presented in the order in which they are applied in the pointing model. Azimuth and altitude descriptors are used from this point on, but for other mount types, simply replace them with “roll” and “pitch” or other descriptors.

•

*J2000 (J2K) frame*: The J2000 frame is an Earth-centered inertial frame. The fundamental plane of this frame is the equator, and the $\mathbf{X}$ axis points toward the vernal equinox. The $\mathbf{Z}$ axis points through the north pole, and the $\mathbf{Y}$ axis forms a right-handed set 90 deg east of the $\mathbf{X}$ axis. These directions are fixed with the mean equator and equinox at 12:00 Terrestrial Time on January 1, 2000.•

*East-north-up (ENU) frame*: The east-north-up (ENU) frame provides local horizontal coordinates. It is centered at the telescope site. The $\mathbf{X}$ axis is defined as east, the $\mathbf{Y}$ axis as north, and the $\mathbf{Z}$ axis forms a right-handed set toward zenith.•

*Mount (MNT) frame*: The $\mathbf{Y}$ axis is defined by the azimuth gimbal rotation axis at time ${t}_{0}$ when the telescope is powered on. The $\mathbf{Z}$ axis is defined as the cross-product between the altitude and azimuth gimbal axes at time ${t}_{0}$. The $\mathbf{X}$ axis forms a right-handed set.•

*Gimbaled (GIM) frame*: The gimbaled frame (GIM) is the mount frame (MNT) rotated through gimbal azimuth $\psi $ and altitude $\alpha $ as read by the encoders. Note that a nonperpendicularity between the azimuth and altitude axes of the gimbals is allowed.•

*Star camera nominal (ST) frame*: The $\mathbf{X}$ axis is defined by the horizontal direction in the star camera mounted externally to the telescope. The $\mathbf{Y}$ axis is defined by the vertical direction in the star camera mounted externally to the telescope. The $\mathbf{Z}$ axis is defined by the star camera boresight, which is assumed to be perpendicular to the focal plane.•

*Observed (OBS) frame*: This frame is the star camera nominal frame (ST) rotated about a vector defined by the cross-product of zenith and the telescope boresight. This contains the vertical deflection of the telescope due to gravity as well as the effect of atmospheric refraction.

## 2.2.

### Formulation

Each star camera image yields a quaternion rotation between the J2000 frame and the observed frame (OBS). A star camera measurement at time $t$ is given by

## Eq. (1)

$${}^{\mathrm{OBS}}{\mathbf{q}}_{\mathrm{J}2\mathrm{K}}(t)={\mathbf{q}}_{n}\otimes {}^{\mathrm{OBS}}{\mathbf{q}}_{\mathrm{ST}}(t)\otimes {}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{GIM}}\otimes {{}^{\mathrm{GIM}}\mathbf{q}}_{\mathrm{MNT}}(t)\otimes {{}^{\mathrm{MNT}}\mathbf{q}}_{\mathrm{ENU}}\otimes {}^{\mathrm{ENU}}{\mathbf{q}}_{\mathrm{J}2\mathrm{K}}(t),$$^{9}The other rotations each contain unknown calibration parameters, which will be defined.

The rotation from the ENU frame to the MNT frame, ${}^{\mathrm{MNT}}{\mathbf{q}}_{\mathrm{ENU}}$, is unknown and must be estimated fully. The rotation from the MNT frame to the GIM frame is given by a rotation through the known azimuth and altitude gimbal angles, $\psi (t)$ and $\alpha (t)$, which can be read out from the encoders. A nonperpendicularity between the gimbal axes is accounted for by introducing a rotation angle ${\theta}_{\mathrm{NP}}$ in the $\mathbf{XY}$ plane of the MNT frame. Overall, the rotation from the MNT frame to the GIM frame is given by

## Eq. (2)

$${}^{\mathrm{GIM}}{\mathbf{q}}_{\mathrm{MNT}}(t)={\mathbf{q}}_{\mathrm{NP}}\otimes {\mathbf{q}}_{\mathrm{alt}}(t)\otimes {\mathbf{q}}_{\mathrm{NP}}^{-1}\otimes {\mathbf{q}}_{\mathrm{azi}}(t).$$The azimuth rotation is given by

## Eq. (3)

$${\mathbf{q}}_{\mathrm{azi}}(t)={[\begin{array}{cccc}0& \mathrm{sin}(\psi (t)/2)& 0& \mathrm{cos}(\psi (t)/2)\end{array}]}^{T}.$$The altitude rotation is given by

## Eq. (4)

$${\mathbf{q}}_{\mathrm{alt}}(t)={[\begin{array}{cccc}\mathrm{sin}(\alpha (t)/2)& 0& 0& \mathrm{cos}(\alpha (t)/2)\end{array}]}^{T}.$$The nonperpendicularity between the gimbal axes is given by

## Eq. (5)

$${\mathbf{q}}_{\mathrm{NP}}={[\begin{array}{cccc}0& 0& -\mathrm{sin}({\theta}_{\mathrm{NP}})& \mathrm{cos}({\theta}_{\mathrm{NP}})\end{array}]}^{T}.$$Equations (2)–(5) define the rotation from the MNT frame to the GIM frame, which contains one unknown, ${\theta}_{\mathrm{NP}}$.

The next rotation is from the GIM frame to the ST frame, ${}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{GIM}}$. This unknown is particularly relevant for a telescope with incremental encoders because the zero position of the telescope is arbitrary upon startup. This rotation is unknown and must be estimated fully.

The rotation from the ST frame to the OBS frame is given by a small vertical deflection that describes the sag of the telescope. We introduce an unknown vertical deflection coefficient, ${a}_{d}$. Additionally, we introduce the vector ${\mathbf{v}}_{d}(t)$, which is the axis about which vertical deflection occurs defined in the OBS frame. It is given by the normalized cross-product of zenith and the telescope boresight:

## Eq. (6)

$${\mathbf{v}}_{d}(t)=\frac{(\mathrm{A}({}^{\mathrm{OBS}}{\mathbf{q}}_{\mathrm{ENU}}(t)){[\begin{array}{ccc}0& 0& 1\end{array}]}^{T})\times {{\mathbf{r}}_{\mathrm{tel}}|}_{\mathrm{OBS}}}{\Vert (\mathrm{A}({}^{\mathrm{OBS}}{\mathbf{q}}_{\mathrm{ENU}}(t)){[\begin{array}{ccc}0& 0& 1\end{array}]}^{T})\times {{\mathbf{r}}_{\mathrm{tel}}|}_{\mathrm{OBS}}\Vert},$$## Eq. (7)

$${}^{\mathrm{OBS}}{\mathbf{q}}_{\mathrm{ST}}(t)=\left[\begin{array}{c}\mathrm{sin}[{a}_{d}\text{\hspace{0.17em}}\mathrm{cos}[{\alpha}_{\mathrm{obs}}(t)]/2]{\mathbf{v}}_{d}(t)\\ \mathrm{cos}[{a}_{d}\text{\hspace{0.17em}}\mathrm{cos}[{\alpha}_{\mathrm{obs}}(t)]/2]\end{array}\right].$$In summary, the unknowns that must be estimated are ${}^{\mathrm{MNT}}{\mathbf{q}}_{\mathrm{ENU}}$, ${\theta}_{\mathrm{NP}}$, ${}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{GIM}}$, and ${a}_{d}$. This results in a total of eight unknown parameters, plus two parameters from intercamera alignment, resulting in a total of 10 parameters in the overall model.

## 2.3.

### Gimbal Angle and Rate Commands

The primary goal of the pointing model is to determine how to provide angle and rate inputs to the mount to look at a desired target, which we derive in this section. Let ${{\mathbf{r}}_{\mathrm{pnt}}|}_{\mathrm{J}2\mathrm{K}}$ be the unit pointing vector from the telescope to the target in the J2000 frame. This unit pointing vector is given by

## Eq. (8)

$${{\mathbf{r}}_{\mathrm{pnt}}|}_{\mathrm{J}2\mathrm{K}}=\frac{{{\mathbf{r}}_{\mathrm{targ}}|}_{\mathrm{J}2\mathrm{K}}-{{\mathbf{r}}_{\mathrm{gs}}|}_{\mathrm{J}2\mathrm{K}}}{\Vert {{\mathbf{r}}_{\mathrm{targ}}|}_{\mathrm{J}2\mathrm{K}}-{{\mathbf{r}}_{\mathrm{gs}}|}_{\mathrm{J}2\mathrm{K}}\Vert},$$The pointing model can be applied to image a target in the primary detector (the detector behind the telescope) as follows:

## Eq. (9)

$${{\mathbf{r}}_{\mathrm{tel}}|}_{\mathrm{OBS}}=\mathrm{A}({}^{\mathrm{OBS}}{\widehat{\mathbf{q}}}_{\mathrm{ST}}\otimes {}^{\mathrm{ST}}{\widehat{\mathbf{q}}}_{\mathrm{GIM}}\otimes {}^{\mathrm{GIM}}{\widehat{\mathbf{q}}}_{\mathrm{MNT}}\otimes {}^{\mathrm{MNT}}{\widehat{\mathbf{q}}}_{\mathrm{ENU}}\otimes {}^{\mathrm{ENU}}{\mathbf{q}}_{\mathrm{J}2\mathrm{K}}){{\mathbf{r}}_{\mathrm{pnt}}|}_{\mathrm{J}2\mathrm{K}}.$$The gimbal angles appear in both ${}^{\mathrm{OBS}}{\widehat{\mathbf{q}}}_{\mathrm{ST}}$, which determines the vertical deflection of the telescope, and ${}^{\mathrm{GIM}}{\widehat{\mathbf{q}}}_{\mathrm{MNT}}$, which executes the gimbal rotation. A simplifying assumption is made that ${}^{\mathrm{OBS}}{\widehat{\mathbf{q}}}_{\mathrm{ST}}$ can be evaluated based on the target azimuth and altitude, which can be determined from ${{\mathbf{r}}_{\mathrm{pnt}}|}_{\mathrm{ENU}}$. This assumption states that the vertical deflection from the undeflected position is approximately the same as the vertical deflection would be at the desired location. Since the deflection should be less than a degree in altitude and deflection is proportional to the cosine of the altitude angle, this is justified.

This assumption allows the problem to be simplified greatly. The gimbal angles only appear in the ${}^{\mathrm{GIM}}{\widehat{\mathbf{q}}}_{\mathrm{MNT}}$ transformation, so Eq. (9) can be simplified as follows:

## Eq. (10)

$${{\mathbf{r}}_{\mathrm{tel}}|}_{\mathrm{GIM}}=\mathrm{A}({}^{\mathrm{GIM}}{\widehat{\mathbf{q}}}_{\mathrm{MNT}}){{\mathbf{r}}_{\mathrm{pnt}}|}_{\mathrm{MNT}},$$Combining Eqs. (2) and (10) and rearranging yields:

## Eq. (11)

$$\mathrm{A}({\mathbf{q}}_{\mathrm{NP}}^{-1}){{\mathbf{r}}_{\mathrm{tel}}|}_{\mathrm{GIM}}=\mathrm{A}({\mathbf{q}}_{\mathrm{alt}}\otimes {\mathbf{q}}_{\mathrm{NP}}^{-1}\otimes {\mathbf{q}}_{\mathrm{azi}}){{\mathbf{r}}_{\mathrm{pnt}}|}_{\mathrm{MNT}}.$$For notational simplicity, let

## Eq. (12)

$$\mathbf{a}=\mathrm{A}({\mathbf{q}}_{\mathrm{NP}}^{-1}){{\mathbf{r}}_{\mathrm{tel}}|}_{\mathrm{GIM}}$$Using the definitions from Eqs. (3)–(5) to multiply out Eq. (11) gives the set of equations:

## Eq. (14)

$${a}_{1}=\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{cos}(\psi ){b}_{1}+\mathrm{sin}({\theta}_{\mathrm{NP}}){b}_{2}-\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{sin}(\psi ){b}_{3},$$## Eq. (15)

$${a}_{2}=[-\mathrm{sin}({\theta}_{\mathrm{NP}})\mathrm{cos}(\alpha )\mathrm{cos}(\psi )+\mathrm{sin}(\alpha )\mathrm{sin}(\psi )]{b}_{1}+\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{cos}(\alpha ){b}_{2}+[\mathrm{sin}({\theta}_{\mathrm{NP}})\mathrm{cos}(\alpha )\mathrm{sin}(\psi )+\mathrm{sin}(\alpha )\mathrm{cos}(\psi )]{b}_{3},$$## Eq. (16)

$${a}_{3}=[\mathrm{sin}({\theta}_{\mathrm{NP}})\mathrm{sin}(\alpha )\mathrm{cos}(\psi )+\mathrm{cos}(\alpha )\mathrm{sin}(\psi )]{b}_{1}-\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{sin}(\alpha ){b}_{2}+[-\mathrm{sin}({\theta}_{\mathrm{NP}})\mathrm{sin}(\alpha )\mathrm{sin}(\psi )+\mathrm{cos}(\alpha )\mathrm{cos}(\psi )]{b}_{3},$$To solve for the gimbal angles, we first provide a general relationship that can be applied to Eqs. (14)–(16). Given an equation of the form:

## Eq. (17)

$$u\text{\hspace{0.17em}}\mathrm{cos}(\theta )+v\text{\hspace{0.17em}}\mathrm{sin}(\theta )=w$$## Eq. (18)

$$\mathrm{cos}(\theta )=\frac{uw\pm {[2{u}^{2}{w}^{2}-2({u}^{2}+{v}^{2})({v}^{2}+{w}^{2})]}^{1/2}}{{u}^{2}+{v}^{2}}.$$Equation (14) is in the form of Eq. (17), so $\mathrm{cos}(\psi )$ can be calculated with Eq. (18). This yields four possible solutions for the azimuth angle $\psi $. Multiplying Eq. (15) with $\mathrm{cos}(\alpha )$ and subtracting Eq. (16) multiplied by $\mathrm{sin}(\alpha )$ yields an equation in the form of Eq. (17), which can be solved for $\mathrm{cos}(\alpha )$, with $u$, $v$, and $w$ given by

## Eq. (21)

$$w=-\mathrm{sin}({\theta}_{\mathrm{NP}})\mathrm{cos}(\psi ){b}_{1}+\mathrm{cos}({\theta}_{\mathrm{NP}}){b}_{2}+\mathrm{sin}({\theta}_{\mathrm{NP}})\mathrm{sin}(\psi ){b}_{3}.$$Equation (21) depends on the azimuth angle $\psi $, which has four possible solutions. This yields eight possible solutions for $\mathrm{cos}(\alpha )$ and 16 possible solutions for the altitude angle $\alpha $. If there are angle restrictions, such as $0<\alpha <\pi /2$, they can be applied to reduce the solution set. The correct solution for the gimbal angles can be determined by testing each solution against Eq. (11).

By differentiating Eqs. (14)–(16), the desired gimbal rates can be determined to track a target. This applies to both celestial objects and noncelestial objects such as satellites. It is assumed that ${{\dot{\mathbf{r}}}_{\mathrm{pnt}}|}_{\mathrm{MNT}}$ has been calculated by taking into account the motion of the target and Earth rotation. The rate of change of the target in the primary detector can be specified in calculating ${{\dot{\mathbf{r}}}_{\mathrm{tel}}|}_{\mathrm{GIM}}$. Setting ${{\dot{\mathbf{r}}}_{\mathrm{tel}}|}_{\mathrm{GIM}}=0$ will maintain the target in a fixed location in the primary detector (assuming a nonrotating field). The equations resulting from this differentiation are as follows:

## Eq. (22)

$${\dot{a}}_{1}=-\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{sin}(\psi )\dot{\psi}{b}_{1}-\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{cos}(\psi )\dot{\psi}{b}_{3}+\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{cos}(\psi ){\dot{b}}_{1}+\mathrm{sin}({\theta}_{\mathrm{NP}}){\dot{b}}_{2}-\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{sin}(\psi ){\dot{b}}_{3},$$## Eq. (23)

$${\dot{a}}_{2}=[\mathrm{sin}(\alpha )\mathrm{cos}(\psi )[\mathrm{sin}({\theta}_{\mathrm{NP}})\dot{\alpha}+\dot{\psi}]+\mathrm{cos}(\alpha )\mathrm{sin}(\psi )[\mathrm{sin}({\theta}_{\mathrm{NP}})\dot{\psi}+\dot{\alpha}]]{b}_{1}+[\mathrm{cos}(\alpha )\mathrm{cos}(\psi )[\mathrm{sin}({\theta}_{\mathrm{NP}})\dot{\psi}+\dot{\alpha}]-\mathrm{sin}(\alpha )\mathrm{sin}(\psi )[\mathrm{sin}({\theta}_{\mathrm{NP}})\dot{\alpha}+\dot{\psi}]]{b}_{3}-\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{sin}(\alpha )\dot{\alpha}{b}_{2}+[\mathrm{sin}(\alpha )\mathrm{sin}(\psi )-\mathrm{sin}({\theta}_{\mathrm{NP}})\mathrm{cos}(\alpha )\mathrm{cos}(\psi )]{\dot{b}}_{1}+\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{cos}(\alpha ){\dot{b}}_{2}+[\mathrm{sin}({\theta}_{\mathrm{NP}})\mathrm{cos}(\alpha )\mathrm{sin}(\psi )+\mathrm{sin}(\alpha )\mathrm{cos}(\psi )]{\dot{b}}_{3},$$## Eq. (24)

$${\dot{a}}_{3}=[\mathrm{cos}(\alpha )\mathrm{cos}(\psi )[\mathrm{sin}({\theta}_{\mathrm{NP}})\dot{\alpha}+\dot{\psi}]-\mathrm{sin}(\alpha )\mathrm{sin}(\psi )[\mathrm{sin}({\theta}_{\mathrm{NP}})\dot{\psi}+\dot{\alpha}]]{b}_{1}+[-\mathrm{sin}(\alpha )\mathrm{cos}(\psi )[\mathrm{sin}({\theta}_{\mathrm{NP}})\dot{\psi}+\dot{\alpha}]-\mathrm{cos}(\alpha )\mathrm{sin}(\psi )[\mathrm{sin}({\theta}_{\mathrm{NP}})\dot{\alpha}+\dot{\psi}]]{b}_{3}-\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{cos}(\alpha )\dot{\alpha}{b}_{2}+[\mathrm{cos}(\alpha )\mathrm{sin}(\psi )+\mathrm{sin}({\theta}_{\mathrm{NP}})\mathrm{sin}(\alpha )\mathrm{cos}(\psi )]{\dot{b}}_{1}-\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{sin}(\alpha ){\dot{b}}_{2}+[-\mathrm{sin}({\theta}_{\mathrm{NP}})\mathrm{sin}(\alpha )\mathrm{sin}(\psi )+\mathrm{cos}(\alpha )\mathrm{cos}(\psi )]{\dot{b}}_{3}.$$Equation (22) can be solved for the azimuth gimbal rate:

## Eq. (25)

$$\dot{\psi}=\frac{-{\dot{a}}_{1}+\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{cos}(\psi ){\dot{b}}_{1}+\mathrm{sin}({\theta}_{\mathrm{NP}}){\dot{b}}_{2}-\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{sin}(\psi ){\dot{b}}_{3}}{\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{sin}(\psi ){b}_{1}+\mathrm{cos}({\theta}_{\mathrm{NP}})\mathrm{cos}(\psi ){b}_{3}}.$$Multiplying Eq. (23) by $\mathrm{cos}(\alpha )$ and subtracting Eq. (24) multiplied by $\mathrm{sin}(\alpha )$ yields a solution for the altitude gimbal rate:

## Eq. (26)

$$\dot{\alpha}=\frac{\mathrm{cos}(\alpha ){\dot{a}}_{2}-\mathrm{sin}(\alpha ){\dot{a}}_{3}-\mathrm{sin}({\theta}_{\mathrm{NP}})[\mathrm{sin}(\psi )(\dot{\psi}{b}_{1}+{\dot{b}}_{3})+\mathrm{cos}(\psi )(\dot{\psi}{b}_{3}-{\dot{b}}_{1})]}{\mathrm{sin}(\alpha ){b}_{1}+\mathrm{cos}(\alpha ){b}_{3}}.$$Using Eqs. (25) and (26), the mount can be commanded to follow a target trajectory.

## 3.

## Calibration with Star Camera

This section covers the three steps that are required to calibrate the parameters of the pointing model. These steps consist of an intercamera alignment procedure, a coarse calibration parameter fit, and a fine calibration parameter fit.

## 3.1.

### Intercamera Alignment

The purpose of the intercamera alignment procedures is to identify the location of the telescope boresight in the star camera. This allows calibration with the star camera to be used to guide a signal through the primary aperture. A distant source (e.g., a bright terrestrial light or a star) is centered in the primary detector and also captured with the star camera. The centroid of the target in the star camera provides a unit vector in the ST frame, ${{\mathbf{r}}_{\mathrm{tel}}|}_{\mathrm{OBS}}$, which represents the boresight of the telescope.

## 3.2.

### Coarse Calibration

Coarse calibration provides an initial state estimate for fine calibration. It utilizes a series of star camera measurements as modeled in Eq. (1). For coarse calibration, several assumptions are made. Measurement noise is ignored, vertical deflection is ignored (i.e., the deflection coefficient ${a}_{d}$ is assumed to be zero), and the rotation axis nonperpendicularity ${\theta}_{\mathrm{NP}}$ is assumed to be zero, such that ${}^{\mathrm{GIM}}{\mathbf{q}}_{\mathrm{MNT}}(t)$ is known from the encoder output. Under these assumptions, the remaining unknowns in Eq. (1) are ${}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{GIM}}$ and ${}^{\mathrm{MNT}}{\mathbf{q}}_{\mathrm{ENU}}$, which must be estimated.

The $i$’th star camera measurement in the form of ${}^{\mathrm{OBS}}{\mathbf{q}}_{\mathrm{J}2\mathrm{K},i}$ is multiplied by known transformations into the form ${}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{ENU},i}$. Given an $i$’th and $j$’th measurement, they can be used to estimate ${}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{GIM}}$ with the following:

## Eq. (27)

$${}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{ENU},i}\otimes {}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{ENU},j}^{-1}={}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{GIM}}\otimes {}^{\mathrm{GIM}}{\mathbf{q}}_{\mathrm{MNT},i}\otimes {}^{\mathrm{GIM}}{\mathbf{q}}_{\mathrm{MNT},j}^{-1}\otimes {}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{GIM}}^{-1}.$$Using the quaternion property in Eq. (51), Eq. (27) can be written as follows:

## Eq. (28)

$${}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{ENU},i}\otimes {}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{ENU},j}^{-1}=\left[\begin{array}{cc}\mathrm{A}({}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{GIM}})& 0\\ 0& 1\end{array}\right]{}^{\mathrm{GIM}}{\mathbf{q}}_{\mathrm{MNT},i}\otimes {}^{\mathrm{GIM}}{\mathbf{q}}_{\mathrm{MNT},j}^{-1}.$$By pairing star camera measurements to calculate the quaternions in Eq. (28), the problem transforms into one of attitude determination given a set of vector measurements. A method of determining attitude from vector measurements such as QUEST^{10} can then be applied to estimate ${}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{GIM}}$.

Similarly, ${}^{\mathrm{MNT}}{\mathbf{q}}_{\mathrm{ENU}}$ can be estimated from

## Eq. (29)

$${}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{ENU},i}^{-1}\otimes {}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{ENU},j}=\left[\begin{array}{cc}\mathrm{A}({}^{\mathrm{MNT}}{\mathbf{q}}_{\mathrm{ENU}}^{-1})& 0\\ 0& 1\end{array}\right]{}^{\mathrm{GIM}}{\mathbf{q}}_{\mathrm{MNT},i}^{-1}\otimes {}^{\mathrm{GIM}}{\mathbf{q}}_{\mathrm{MNT},j}.$$These coarse estimates of ${}^{\mathrm{ST}}{\mathbf{q}}_{\mathrm{GIM}}$ and ${}^{\mathrm{MNT}}{\mathbf{q}}_{\mathrm{ENU}}$ are used to proceed to fine calibration.

## 3.3.

### Fine Calibration

Fine calibration uses a least squares approach with the initial state supplied by coarse calibration. There are eight unknown parameters to be estimated. The error state is given by

## Eq. (30)

$$\delta \mathbf{x}={[\begin{array}{cccc}\delta {a}_{d}& {}^{\mathrm{ST}}\delta {\mathbf{Q}}_{\mathrm{GIM}}& \delta {\theta}_{NP}& {}^{\mathrm{MNT}}\delta {\mathbf{Q}}_{\mathrm{ENU}}\end{array}]}^{T}.$$The vector portion of the error quaternion of the star camera measurements from Eq. (1) can be approximated to first order as follows:

## Eq. (31)

$${}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{J}2\mathrm{K},i}\approx {\mathbf{Q}}_{n,i}+{}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{ST},i}+\mathrm{A}({}^{\mathrm{OBS}}{\mathbf{q}}_{\mathrm{ST},i}){}^{\mathrm{ST}}\delta {\mathbf{Q}}_{\mathrm{GIM}}+\mathrm{A}({}^{\mathrm{OBS}}{\widehat{\mathbf{q}}}_{\mathrm{GIM},i}){}^{\mathrm{GIM}}\delta {\mathbf{Q}}_{\mathrm{MNT},i}+\mathrm{A}({}^{\mathrm{OBS}}{\widehat{\mathbf{q}}}_{\mathrm{MNT},i}){}^{\mathrm{GIM}}\delta {\mathbf{Q}}_{\mathrm{ENU}}.$$In Eq. (31), ${}^{\mathrm{ST}}\delta {\mathbf{Q}}_{\mathrm{GIM}}$ and ${}^{\mathrm{MNT}}\delta {\mathbf{Q}}_{\mathrm{ENU}}$ are components of the state, but ${}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{ST},i}$ and ${}^{\mathrm{GIM}}\delta {\mathbf{Q}}_{\mathrm{MNT},i}$ must be related back to the state components.

Equations (2)–(5) define the rotation between the MNT and the GIM. With these equations and utilizing the quaternion property in Eq. (51), the error quaternion ${}^{\mathrm{GIM}}\delta {\mathbf{q}}_{\mathrm{MNT},i}$ is given by

## Eq. (32)

$${}^{\mathrm{GIM}}\delta {\mathbf{q}}_{\mathrm{MNT},i}=\delta {\mathbf{q}}_{\mathrm{NP}}\otimes \left[\begin{array}{cc}\mathrm{A}({\widehat{\mathbf{q}}}_{\mathrm{NP}}\otimes {\mathbf{q}}_{\mathrm{alt},i}\otimes {\widehat{\mathbf{q}}}_{\mathrm{NP}}^{-1})& 0\\ 0& 1\end{array}\right]\delta {\mathbf{q}}_{\mathrm{NP}}^{-1}.$$The vector portion of the error quaternion from Eq. (32) can be approximated to first order as follows:

## Eq. (33)

$${}^{\mathrm{GIM}}\delta {\mathbf{Q}}_{\mathrm{MNT},i}\approx ({\mathrm{I}}_{3\times 3}-\mathrm{A}({\widehat{\mathbf{q}}}_{\mathrm{NP}}\otimes {\mathbf{q}}_{\mathrm{alt},i}\otimes {\widehat{\mathbf{q}}}_{\mathrm{NP}}^{-1}))\delta {\mathbf{Q}}_{\mathrm{NP}}.$$Finally, $\delta {\mathbf{q}}_{\mathrm{NP}}$ must be related to $\delta {\theta}_{\mathrm{NP}}$ from the state. To first order, the vector portion of $\delta {\mathbf{q}}_{\mathrm{NP}}$ can be approximated as follows:

## Eq. (34)

$$\delta {\mathbf{Q}}_{\mathrm{NP}}\approx {[\begin{array}{ccc}0& 0& -\delta {\theta}_{\mathrm{NP}}/2\end{array}]}^{T}.$$Combining this result with Eq. (33) yields the overall approximation:

## Eq. (35)

$${}^{\mathrm{GIM}}\delta {\mathbf{Q}}_{\mathrm{MNT},i}\approx \frac{1}{2}[\mathrm{A}({\widehat{\mathbf{q}}}_{\mathrm{NP}}\otimes {\mathbf{q}}_{\mathrm{alt},i}\otimes {\widehat{\mathbf{q}}}_{\mathrm{NP}}^{-1})-{\mathrm{I}}_{3\times 3})]{[\begin{array}{ccc}0& 0& 1\end{array}]}^{T}\delta {\theta}_{\mathrm{NP}}.$$Returning to Eq. (31), ${}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{ST},i}$ must be related to the state components. Equations (6) and (7) describe the rotation from the ST to the OBS. The error quaternion from the star camera to the OBS at the $i$’th measurement is as follows:

## Eq. (36)

$${}^{\mathrm{OBS}}\delta {\mathbf{q}}_{\mathrm{ST},i}=\left[\begin{array}{c}\mathrm{sin}(\delta {a}_{d}\text{\hspace{0.17em}}\mathrm{cos}({\alpha}_{\mathrm{obs}},i)/2){\mathbf{v}}_{d,i}\\ \mathrm{cos}(\delta {a}_{d}\text{\hspace{0.17em}}\mathrm{cos}({\alpha}_{\mathrm{obs}},i)/2)\end{array}\right],$$## Eq. (37)

$${}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{ST},i}\approx \frac{1}{2}\text{\hspace{0.17em}}\mathrm{cos}({\alpha}_{\mathrm{obs},i}){\mathbf{v}}_{d,i}\delta {a}_{d}.$$Overall, combining Eqs. (31), (35), and (37) yields a linearization of the form:

## Eq. (38)

$${}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{J}2\mathrm{K},i}={H}_{i}\delta {\mathbf{x}}_{i}+{\mathbf{Q}}_{n,i},$$## Eq. (39)

$${H}_{i}=\left[\begin{array}{cccc}\frac{\partial {}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{J}2\mathrm{K},i}}{\partial \delta {a}_{d}}& \frac{\partial {}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{J}2\mathrm{K},i}}{\partial {}^{\mathrm{ST}}\delta {\mathbf{Q}}_{\mathrm{GIM}}}& \frac{\partial {}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{J}2\mathrm{K},i}}{\partial \delta {\theta}_{NP}}& \frac{\partial {}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{J}2\mathrm{K},i}}{\partial {}^{\mathrm{MNT}}\delta {\mathbf{Q}}_{\mathrm{ENU}}}\end{array}\right],$$## Eq. (40)

$$\frac{\partial {}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{J}2\mathrm{K},i}}{\partial \delta {a}_{d}}\approx \frac{1}{2}\text{\hspace{0.17em}}\mathrm{cos}({\alpha}_{\mathrm{obs},i}){\mathbf{v}}_{d,i},$$## Eq. (41)

$$\frac{\partial {}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{J}2\mathrm{K},i}}{\partial {}^{\mathrm{ST}}\delta {\mathbf{Q}}_{\mathrm{GIM}}}\approx \mathrm{A}({}^{\mathrm{OBS}}{\widehat{\mathbf{q}}}_{\mathrm{ST},i}),$$## Eq. (42)

$$\frac{\partial {}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{J}2\mathrm{K},i}}{\partial \delta {\theta}_{NP}}\approx \frac{1}{2}\mathrm{A}({}^{\mathrm{OBS}}{\widehat{\mathbf{q}}}_{\mathrm{GIM},i})(\mathrm{A}({\widehat{\mathbf{q}}}_{\mathrm{NP}}\otimes {\widehat{\mathbf{q}}}_{\mathrm{alt},i}\otimes {\widehat{\mathbf{q}}}_{\mathrm{NP}}^{-1})-{\mathrm{I}}_{3\times 3})\cdot {[\begin{array}{ccc}0& 0& 1\end{array}]}^{T},$$## Eq. (43)

$$\frac{\partial {}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{J}2\mathrm{K},i}}{\partial {}^{\mathrm{MNT}}\delta {\mathbf{Q}}_{\mathrm{ENU}}}\approx \mathrm{A}({}^{\mathrm{OBS}}{\widehat{\mathbf{q}}}_{\mathrm{MNT},i}).$$Multiple measurements can be combined into an iterative nonlinear least squares process. For $n$ measurements, the measurement errors are related to state errors as follows:

## Eq. (44)

$$\left[\begin{array}{c}{}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{J}2\mathrm{K},1}\\ \vdots \\ {}^{\mathrm{OBS}}\delta {\mathbf{Q}}_{\mathrm{J}2\mathrm{K},n}\end{array}\right]=\left[\begin{array}{c}{H}_{1}\\ \vdots \\ {H}_{n}\end{array}\right]\delta {\mathbf{x}}_{k}+\left[\begin{array}{c}{\mathbf{Q}}_{n,1}\\ \vdots \\ {\mathbf{Q}}_{n,n}\end{array}\right].$$This equation is of the form:

where $k$ is the iteration number and the covariance of $\mathbf{\omega}$ is a diagonal matrix $R$ which corresponds with the measurement noise covariance. Using iterative least squares, the state update is given by## Eq. (46)

$$\delta {\mathbf{x}}_{k}={({H}^{T}{R}^{-1}H)}^{-1}{H}^{T}{R}^{-1}\delta {\mathbf{y}}_{k}.$$The quaternions ${}^{\mathrm{ST}}{\widehat{\mathbf{q}}}_{\mathrm{GIM}}$ and ${}^{\mathrm{MNT}}{\widehat{\mathbf{q}}}_{\mathrm{ENU}}$ are updated with a quaternion product and the state components ${\widehat{\theta}}_{NP}$ and ${\widehat{a}}_{d}$ are updated additively. Iterations continue until the estimate converges on a solution.

## 4.

## Results

This section covers results from testing the pointing model and calibration approach developed in Secs. 2 and 3 on a very low-cost telescope. Pointing performance is strongly dependent on hardware, so these results are meant to be taken as an example application rather than as a lower or upper bound on performance. Figure 2 shows the steps that take the telescope from a state of storage to ready-to-track in less than 30 min.

## 4.1.

### Setup

We tested the calibration algorithm on the Portable Telescope for Lasercom,^{7} as shown in Fig. 3. The hardware consists of a telescope with an externally mounted star camera and a camera behind the telescope. The telescope is a Celestron CPC1100, a popular hobbyist telescope with an 11” (28 cm) aperture and an altazimuth mount. The star camera mounted to the telescope is a low-cost iNova PLB-Mx2 CMOS camera. A 35-mm focal length lens with a 25-mm aperture is paired with the camera, resulting in a field-of-view (FoV) of $7.8\text{\hspace{0.17em}}\mathrm{deg}\times \text{\hspace{0.17em}}5.9\text{\hspace{0.17em}}\mathrm{deg}$ and a plate scale of $22\text{\hspace{0.17em}\hspace{0.17em}}\mathrm{arc}\text{\hspace{0.17em}}\mathrm{sec}/\text{pixel}$. The camera behind the telescope is a Sensors Unlimited Micro SWIR 320CSX. It is an InGaAs camera with an $4.0\times 3.2\text{\hspace{0.17em}\hspace{0.17em}}{\mathrm{mm}}^{2}$ active area. Coupled with the telescope, the full FoV of the detector is $591\times 473\text{\hspace{0.17em}\hspace{0.17em}}\mathrm{arc}\text{\hspace{0.17em}}{\mathrm{sec}}^{2}$ and the plate scale is $0.92\text{\hspace{0.17em}\hspace{0.17em}}\mathrm{arc}\text{\hspace{0.17em}}\mathrm{sec}/\text{pixel}$. The telescope, star camera, and back-end camera are controlled from a Dell Precision M4800 laptop. A graphical user interface developed in Visual Studio is used to control the session, and the software is implemented in a combination of C, C++, and C#. During setup, no effort is put toward leveling the telescope or setting the start position, as these parameters are determined in software.

## 4.2.

### Calibration Results

The results presented in this section were acquired on February 14, 2018, between the hours of 23:48 to 23:59 UTC from the roof of an MIT building, as shown in Fig. 3. The calibration procedure took a total of 11 min. To calibrate the pointing model, 24 star camera images were taken at points equidistributed across the sky above 20-deg altitude. Figure 4 shows the locations of the calibration points on a 2-D projection of the sky.

Images were taken with 300-ms exposure and star identification (ID) was performed on each image using a correlation-based pattern matching algorithm developed by Yoon et al.^{11}^{,}^{12} An image is excluded from the calibration set if fewer than six stars are identified or if the ID score, as described in Ref. 12, is below a threshold of 30, determined empirically.

Table 1 summarizes the results of the star camera images. The azimuth and altitude from the telescope encoders are listed, followed by the number of stars identified and the star ID RMS residual. Once the stars are identified, their vector is known in the J2000 frame from a star catalog. The vectors in the star camera frame are determined from the image, and QUEST^{10} is used to estimate a rotation between the two frames. Using this estimate, the predicted vectors in the star camera are compared to the measured star vectors to calculate the residuals. The RMS of the residuals provides a metric to assess the accuracy of each image measurement, which ranges from 2 to 8 arc sec within this dataset.

## Table 1

Results from star camera images for pointing model calibration taken on February 14, 2018, between the hours of 23:48 to 23:59 UTC. Azimuth and altitude are listed for each calibration image followed by the number of stars identified, the residual of the star identification, and the azimuth and altitude residuals in the pointing model calibration.

# | Azi (deg) | Alt (deg) | Stars ID’d | ID RMS res. (arc sec) | Calibration res. | |
---|---|---|---|---|---|---|

Azi (arc sec) | Alt (arc sec) | |||||

1 | 12.93 | 29.37 | 12 | 4.3 | −38 | 4 |

2 | 45.21 | 38.50 | 13 | 2.2 | −25 | −46 |

3 | 70.29 | 53.84 | 9 | 3.5 | −26 | 4 |

4 | 77.12 | 31.48 | 11 | 3.6 | −26 | 13 |

5 | 102.87 | 31.48 | 8 | 3.3 | 11 | 25 |

6 | 109.70 | 53.84 | 12 | 2.8 | 19 | 30 |

7 | 134.78 | 38.48 | 11 | 3.6 | a | a |

8 | 167.06 | 29.37 | 12 | 3.8 | 136 | −201 |

9 | 161.30 | 52.50 | 9 | 3.7 | a | a |

10 | 136.26 | 73.61 | 13 | 6.3 | −7 | −13 |

11 | 43.73 | 73.60 | 6 | 2.9 | a | a |

12 | 18.69 | 52.52 | 10 | 2.6 | 23 | −37 |

13 | 347.06 | 29.37 | 12 | 3.3 | −23 | 1 |

14 | 314.78 | 38.50 | 12 | 2.2 | −38 | −13 |

15 | 289.70 | 53.84 | 12 | 4.2 | −11 | 13 |

16 | 282.87 | 31.48 | 8 | 2.3 | −36 | 26 |

17 | 257.12 | 31.48 | 9 | 2.6 | −31 | 41 |

18 | 250.29 | 53.84 | 13 | 2.4 | −4 | 31 |

19 | 225.21 | 38.50 | 10 | 5.3 | 14 | 21 |

20 | 192.93 | 29.37 | 13 | 8.0 | 28 | 53 |

21 | 198.69 | 52.52 | 13 | 3.0 | 33 | 52 |

22 | 223.73 | 73.61 | 8 | 4.6 | 10 | 18 |

23 | 316.26 | 73.61 | 10 | 5.1 | −6 | −16 |

24 | 341.30 | 52.52 | 11 | 3.7 | −2 | −3 |

Overall RMS | 27 | 37 |

The final two columns of Table 1 show the azimuth and altitude residuals of each image within the overall pointing model following the approach described in Sec. 3. Three images (#7, #9, and #11) are excluded from the pointing model calibration due to low star ID scores. Image #8 appears to be an outlier, but it has a strong identification score and it is more likely that the calibration is skewed slightly by the exclusion of images #7 and #9 near it (see Fig. 4). The accuracy of the overall calibration was 27 arc sec RMS in azimuth and 37 arc sec RMS in altitude.

Residuals from the 21 images included from calibration are shown in Fig. 5. A trend can be seen between altitude and rotation about the star camera $Z$-axis (rotation around boresight), but otherwise the residuals do not contain any clear trends. Rotation of the star camera about the $Z$-axis only has a small coupling to the telescope line-of-sight (if the star camera and telescope were coaligned perfectly, there would be no coupling), so residuals in the $Z$-axis are of less importance than the other axes.

The pointing model parameters determined from the calibration are summarized in Table 2. The parameters indicate that the initial telescope setup was imperfect: the starting altitude was $-1.24\text{\hspace{0.17em}\hspace{0.17em}}\mathrm{deg}$ and the mount was misleveled by 1.06 deg. These errors can be conveniently identified and corrected in software rather than manually.

## Table 2

Pointing model parameter values as calculated from calibration. Data acquired on February 14, 2018, between the hours of 23:48 to 23:59 UTC.

Parameter | Value | Description |
---|---|---|

${}^{\mathrm{ST}}{\widehat{\mathbf{q}}}_{\mathrm{GIM}}$ | $\left[\begin{array}{c}0.00365\\ -0.0102\\ -0.9999\\ 0.0052\end{array}\right]$ | Rotation between GIM and ST determines telescope “zero” position, which is at an ENU azimuth of 298.8 deg and altitude of $-1.24\text{\hspace{0.17em}\hspace{0.17em}}\mathrm{deg}$ |

${}^{\mathrm{MNT}}{\widehat{\mathbf{q}}}_{\mathrm{ENU}}$ | $\left[\begin{array}{c}0.1670\\ -0.6877\\ 0.6834\\ -0.1794\end{array}\right]$ | Rotation between MNT and ENU frame, indicating that the mount is misleveled by 1.06 deg |

${\widehat{a}}_{d}$ | $-8.59\times {10}^{-4}$ | Vertical deflection coefficient resulting in maximum deflection of 177 arc sec on horizon |

${\widehat{\theta}}_{\mathrm{NP}}$ | 0.19 deg | Gimbal axis nonperpendicularity |

The vertical deflection coefficient is negative, indicating that the telescope tends to pitch up when it is near the horizon. This is likely due to a mass imbalance caused by instrumentation on the back of the telescope, which exacerbates an imbalance already observed with no instrumentation. A counterbalancing weight has been added to the front of the telescope but this approach is imprecise. The calibration also shows that there is a nonperpendicularity of 0.19 deg between the gimbal axes. While a single calibration set is presented here, the calibration procedure has been conducted with this telescope 14 times with similar results and stable estimates for the nonperpendicularity.

## 4.3.

### Star Pointing Results

To test the accuracy of the calibration procedure, 15 bright stars were measured through the main aperture between 00:14 and 00:42 UTC on the same night. Table 3 lists the pointing accuracy for these stars based on their location in the primary detector behind the telescope. The telescope tracked the stars at sidereal rate for each measurement. We consider pointing accuracy rather than tracking accuracy because the observations were less than a minute each. The accuracy was 53 arc sec RMS in azimuth and 66 arc sec RMS in altitude. As expected, these errors are worse than the 27 arc sec RMS and 37 arc sec RMS error of the calibration procedure. A penalty is paid for calibrating with the star camera rather than the primary aperture.

## Table 3

Star pointing results acquired between the times of 00:14 to 00:42 UTC on February 15, 2018.

# | Star name | Azi err. (arc sec) | Alt err. (arc sec) |
---|---|---|---|

1 | Sirius | 32 | −45 |

2 | Betelgeuse | −35 | −47 |

3 | Aldebaran | −18 | −98 |

4 | Procyon | −22 | −24 |

5 | Rigel | −49 | −63 |

6 | Pollux | −45 | 37 |

7 | Mirach | −39 | −92 |

8 | Scheat | 30 | −59 |

9 | Dubhe | 55 | 73 |

10 | Menkar | −7 | −70 |

11 | Algieba | 89 | 52 |

12 | Almach | −32 | −13 |

13 | Wezen | 113 | −28 |

14 | Rho Persei | −64 | −101 |

15 | Mirfak | −63 | −96 |

Overall RMS | 53 | 66 |

In Fig. 6, the errors for each star are plotted against the ENU azimuth and altitude of the observation. A linear trend can be seen between the altitude error and the ENU azimuth. This could indicate a small error in fitting the calibration parameters. There could also be a shift in the mount orientation over time due to the fact that it is not rigidly mounted on a concrete pier, for example. The pointing accuracy is good for this class of telescope, and the primary benefit of this approach is rapid setup that avoids manual prealignment. In comparison, the built-in calibration procedure for the CPC1100 tested on a different night with careful manual deployment yielded accuracies from 100 to $900\text{\hspace{0.17em}\hspace{0.17em}}\mathrm{arc}\text{\hspace{0.17em}}\mathrm{sec}\text{\hspace{0.17em}}\mathrm{f}\mathrm{o}\mathrm{r}\text{\hspace{0.17em}}\mathrm{e}\mathrm{a}\mathrm{c}\mathrm{h}\text{\hspace{0.17em}}\text{star}$.

While using a star camera allows for fast calibration, there are disadvantages to not using the primary aperture. Any misalignment between the star camera and telescope boresight as a function of attitude is ignored in our procedure. For very precise pointing, this will limit the performance. If additional precision is desired, a combination of star camera measurements and measurements from the camera behind the telescope can be used to fit the pointing model. This will increase the time required to calibrate for each additional measurement, but it still retains the benefit of eliminating assumptions about nominal orientation.

## 5.

## Conclusion

In telescope pointing calibration, there is a tradeoff between speed and accuracy. Most pointing models also make assumptions about the nominal orientation of the telescope, which requires manual correction and recalibration if the telescope is too far off of nominal. To enable rapid calibration while maintaining high accuracy, we presented a quaternion-based pointing model tailored for use with a star camera. The calibration approach is completely agnostic to the initial orientation of the telescope/mount so that no manual alignment (e.g., leveling) is needed and even the type of telescope (e.g., altazimuth or equatorial) does not need to be specified. The gimbal angle and rate commands to track a target were derived analytically from the pointing model.

The calibration procedure was tested using a very low-cost telescope. Pointing model parameters were fit from a series of star camera images taken during the 15-min calibration procedure. Results of the calibration were presented, indicating that there were multiple “errors” in the deployment of the telescope: the mount was misleveled by 1.06 deg, had a zero-altitude position 1.24 deg below the horizon, and the gimbal axes showed a 0.19 deg nonperpendicularity. These errors were compensated for in software and the pointing model accuracy was tested by pointing at 15 stars across the sky. The overall star pointing accuracy was 53 arc sec RMS in azimuth and 66 arc sec RMS in altitude. The results support the utility of the calibration approach developed in this work that compromises between speed and accuracy, particularly for low-cost telescopes.

## Appendices

## Appendix:

### Quaternion Conventions

This appendix defines the quaternion conventions, notation, and relevant equations used in the pointing model derivation. Reference 13 provides additional detail on quaternions.

Any rigid-body rotation in three-dimensional space can be represented by a single rotation of angle $\theta $ about a fixed axis $\mathbf{v}$ known as the Euler axis. A quaternion can be defined from these terms as follows:

## Eq. (47)

$$\mathbf{q}=\left[\begin{array}{c}\mathrm{sin}(\theta /2)\mathbf{v}\\ \mathrm{cos}(\theta /2)\end{array}\right].$$The vector and scalar components of a quaternion $\mathbf{q}$ are represented as follows:

with the vector component $\mathbf{Q}$ appearing before the scalar component $q$.With this convention, multiplication of quaternion $\mathbf{p}$ by quaternion $\mathbf{q}$ is given by

## Eq. (49)

$$\mathbf{p}\otimes \mathbf{q}=\left[\begin{array}{c}p\mathbf{Q}+q\mathbf{P}-\mathbf{P}\times \mathbf{Q}\\ pq-\mathbf{P}\xb7\mathbf{Q}\end{array}\right].$$The notation used for the direction cosine matrix corresponding to a quaternion is $\mathrm{A}(\mathbf{q})$, which can be calculated by

## Eq. (50)

$$\mathrm{A}(\mathbf{q})=\left[\begin{array}{ccc}{q}^{2}+{Q}_{0}^{2}-{Q}_{1}^{2}-{Q}_{2}^{2}& 2({Q}_{0}{Q}_{1}+q{Q}_{2})& 2({Q}_{0}{Q}_{2}-q{Q}_{1})\\ 2({Q}_{0}{Q}_{1}-q{Q}_{2})& {q}^{2}-{Q}_{0}^{2}+{Q}_{1}^{2}-{Q}_{2}^{2}& 2({Q}_{1}{Q}_{2}+q{Q}_{0})\\ 2({Q}_{0}{Q}_{2}+q{Q}_{1})& 2({Q}_{1}{Q}_{2}-q{Q}_{0})& {q}^{2}-{Q}_{0}^{2}-{Q}_{1}^{2}+{Q}_{2}^{2}\end{array}\right].$$A relationship between two quaternions $\mathbf{p}$ and $\mathbf{q}$ that is frequently used in this work is given by

## Eq. (51)

$$\mathbf{q}\otimes \mathbf{p}\otimes {\mathbf{q}}^{-1}=\left[\begin{array}{cc}\mathrm{A}(\mathbf{q})& 0\\ 0& 1\end{array}\right]\mathbf{p}.$$The current estimate of a quaternion has an error of $\delta \mathbf{q}$, such that the true quaternion $\mathbf{q}$ is given by

where $\widehat{\mathbf{q}}$ is the quaternion estimate.Quaternions are generally written to explicitly note the reference frames as ${}^{\mathrm{A}}{\mathbf{q}}_{\mathrm{B}}$, which represents a rotation from frame B to frame A.

## Acknowledgments

K. M. R. would like to acknowledge support from the NASA Space Technology Research Fellowship under Grant No. #NNX14AL61H. This work was also funded by an Innovation Grant from the MIT Deshpande Center. Finally, we would like to thank Ewan Douglas and Emily Clements for helpful feedback and clarifying discussions.

## References

## Biography

**Kathleen M. Riesing** is a PhD candidate in aeronautics and astronautics at MIT specializing in estimation and control applied to space systems. She received her BSE degree in mechanical and aerospace engineering from Princeton University (2013) and an SM degree in aeronautics and astronautics from MIT (2015). Her graduate work has focused on pointing, acquisition, and tracking of ground-based and space-based laser communication systems.

**Hyosang Yoon** is an attitude determination and control engineer at Planet. He received his BS (2008) and MS (2010) degrees in aerospace engineering from Korea Advanced Institute of Science and Technology (KAIST), and his PhD (2017) degree in aeronautics and astronautics from MIT. Prior to MIT, he worked at the commercial satellite company Satrec Initiative as an attitude control engineer for 5 years. He has an extensive experience in satellite attitude control, including onboard Kalman filter design and implementation, controller design and tuning, sensor and actuator testing, and on-orbit sensor-payload alignment calibration.

**Kerri L. Cahoy** is an associate professor in the Department of Aeronautics and Astronautics at MIT. She received her BS (2000) degree in electrical engineering from Cornell University, and her MS (2002) and PhD (2008) degrees in electrical engineering from Stanford University working with the Radio Science Team on Mars Global Surveyor. She joined the MIT faculty in July 2011 and leads the Space Telecommunications, Astronomy, and Radiation Laboratory (STAR Lab).