Using Solar Panels as Sun Sensors on NTNU Test...
Transcript of Using Solar Panels as Sun Sensors on NTNU Test...
Norwegian University of Science and Technology
TTK4550 – Specialization Project
Using Solar Panels as Sun Sensors onNTNU Test Satellite
Author:
Martin Nygren
Supervisor:
Prof. Jan Tommy Gravdahl
December 22, 2012
Abstract
The NUTS (NTNU Test Satellite) is a satellite being built as a student CubeSat project. The project
started in September 2010 as a part of the Norwegian student satellite program run by NAROM (Nor-
wegian Centre for Space-related Education). The NUTS project goals are to design, manufacture and
launch a double CubeSat by 2014.
Using solar panels on 5 of 6 sides of the NUTS CubeSat, we have a lot of attitude determinating informa-
tion readily available during much of the periodical orbit. Using three or more solar panels in combination
can trigonometrically produce a sun vector. However, treating all inbound sunlight as direct light from
the sun leaves the result vulnerable to disturbances like the Earth albedo effect (reflected sunlight from
the Earth), which is hard to model and computationally expensive to simulate. Not compensating for
this effect can corrupt or introduce large offsets in computed sun vectors.
Treating the output current from the solar panels as an angle of 3D inbound light towards the 2D plane
of the panel can produce a set of independent mathematical conical shells. Given the cubic shape of
the satellite, these independent conical shells can iteratively be combined into sets of two and two or-
thogonal conical shells which will produce intersection curves with eachother if the angle of aperture is
large enough. Even though the panels are physically spaced apart, it can be shown that without loss of
generality, these conical shells can be translated along their respective axis of the satellite BODY frame to
have overlapping origins, which we can use to map the convergences of the parabolic intersection curves
into two possible inbound sun vectors for each pair of solar panels. Knowing that opposing panels can’t
be combined to yield valid information, our 5 sides of panels can be combined into 8 different pairs from
which we can interpret information.
At the time of writing, MATLAB code to display computed sun vectors from conical shell intersections
produced by sets of panels in real time has been made and physical experiments are about to commence.
Algorithms to compare and evaluate the produced cluster of vectors to extract desired information and
suppress disturbance are in the making. Making use of instantaneous and tracked individual vectorial
attitudes as well as their rates of change seems promising, but special attention needs to be paid to the
Earth albedo effect in attempt to identify and suppress this disturbance.
Contents
Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
Table of Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii
List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iii
1 Introduction 1
2 Context 2
2.1 NUTS - NTNU Test Satellite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 The components of the satellite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2.1 Backplane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.2 Electrical Power System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.3 Onboard Computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.4 Attitude Determination and Control System . . . . . . . . . . . . . . . . . . . . . . 4
2.2.5 Backplane sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.6 Radio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2.7 Payload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3 Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.1 Previous work on the ADCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3.2 This report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3 Preliminaries 6
3.1 Attitude terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 Attitude representations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2.1 Euler angles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3 Reference frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3.1 Earth Center Inertial (ECI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3.2 Earth Center Earth Fixed (ECEF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3.3 North East Down (NED) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3.4 Orbit Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3.5 Body Frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4 Available sensors for attitude determination 11
4.1 GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 Star trackers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.3 Gyroscopes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.4 Magnetometers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.5 Accelerometers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.6 Earth sensors / Horizon scanners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
i
4.7 Sun sensors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5 Designing a sun vector model 17
5.1 The solar cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2 A trigonometric approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.2.1 2 dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.2.2 3 dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.3 A conical shell model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.3.1 With physically accurate origins . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.3.2 With coinciding origins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.4 Sun reference model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
6 Attitude determination testing 27
6.1 Previous sensor testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.2 Sun sensor: Conical shell sun vector model . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.2.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.2.2 Testing outline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7 Disturbances and inaccuracies 31
7.1 Earth albedo effect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
8 Preliminary disturbance suppression algorithm 33
9 Discussion 36
10 Closing remarks 37
10.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
10.2 Further work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
References 41
A MATLAB code 42
B MATLAB plots 46
ii
List of Figures
2.1 Satellite system overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1 Body, Orbit and ECI frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 NUTS Body coordinate system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1 SPARTNIK’s Earth Horizon detector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.1 General layout of a solar cell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2 2D model of inbound sunlight on NUTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
5.3 3D model of inbound sunlight on NUTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.4 Paper model of a 1U CubeSat at 4:5 scale . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.5 2D vectors inbound on 1D panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
5.6 3D vectors inbound on 2D panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.7 3D vector inbound on two 2D panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6.1 Prototype solar panels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
6.2 Solar cells mounted in 90 degree angle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
7.1 Earth albedo light vector at satellite position . . . . . . . . . . . . . . . . . . . . . . . . . 32
8.1 Graph inspired state cube . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
B.1 MATLAB: Common origin cones produced by 30◦ and 50◦ angles of incidence . . . . . . . 47
B.2 MATLAB: Separate origin cones produced by 30◦ and 50◦ angles of incidence, far out. . . 48
B.3 MATLAB: Separate origin cones produced by 30◦ and 50◦ angles of incidence, close in. . . 49
iii
Chapter 1
Introduction
During the recent years, Norwegian students have attempted the launch of two student satellites, NCUBE-
1 and NCUBE-2. One suffered an unsuccessful launch, and the other has failed to assume contact with
the ground station. However, these projects have sparked interest in students for the fields of space and
spacecraft, which has been recognized by Norwegian space institutions. A program for designing and
launching several more CubeSats has been initiated to draw further interest and create more hands-on
experience with satellites amongst students. This report will present certain design aspects regarding
the modules involved, as well as some of the previous work done on one of the satellites involved in the
project, the NUTS satellite, created by the Norwegian University of Science and Technology.
Besides giving an overview of the sensors used for attitude determination, this document will delve into
one of the problems of the current state of the Attitude Determination and Control System (ADCS);
providing a satisfactory Sun vector to be used for the attitude estimation algorithms. The report will
also summarize certain aspects of previously done modeling and testing, as well as discuss the possible
future work which will need to be done if the model described in this report holds up in physical proof
of concept testing.
Although much needs to be done in order to have a complete satellite ready for launch, which is scheduled
for some time in 2014, the incremental efforts done by the ever changing students involved in the project
is starting to add up to good looking designs of system modules. In the end one can only hope, but we
still feel confident that the efforts done towards a successful satellite launch by the good people of NTNU
will pay off this time around!
1
Chapter 2
Context
2.1 NUTS - NTNU Test Satellite
ANSAT [1] is a student satellite project initiated by NAROM (The Norwegian Centre for Space-related
Education), NSC (Norwegian Space Centre), and ARR (Andya Rocket Range), following the Norwegian
Student Satellite Project NCUBE. ANSAT has entailed the construction and deployment of 3 CubeSat
satellites over the period from 2007 to 2014. These projects are HiNCube [2], CUBEStar [3], and our
project NUTS [4]. Work on NUTS started in September 2010, and thus it is the most recent satellite
to join ANSAT. The main functionality of NUTS will be to capture images of gravity waves [5], process
them and transmit the images back to a ground station. Roger Birkelands Mission Statement [6] contains
a list of tentative mission goals towards achieving this.
NUTS adheres to CubeSat specifications [7], and will be built as a 2U CubeSat, or ”double CubeSat”,
where 1U is defined by the size 10x10x10 cm, and it should weigh in at less than 1.33 kg. One thing
that currently makes NUTS stand out from other CubeSats is the active research done towards utilizing
a carbon fibre mesh for the structure [8], which if successfully done, will yield a lower structural weight
while still providing the demanded structural rigidity and robustness.
2.2 The components of the satellite
At an overview, the satellite can be broken down into 6 different main subsystems with each of their own
responsibilites; Electrical Power System (EPS), Onboard Computer (OBC), Attitude Determination and
Control System (ADCS), Backplane sensors, Radio and Payload. The backplane provides a means for
these different subsystems to connect and communicate; the available sensors are integrated in the back-
plane itself, while the other modules are connected via master (OBC and radio) and slave (EPS, payload
and ADCS) module slots. The master modules are able to isolate or reset systems which malfunction or
fail to behave in a predicted manner, even other master modules. An abstract system overview can be
seen in Figure 2.1.
2
Figure 2.1: Abstract overview of the satellite modules and their connections to the backplane bus. Figurecourtesy of Emma Litzler, from NUTS website.
2.2.1 Backplane
The CubeSat default hardware setup is PC/104 [9], but in the spirit of research and innovation, NUTS
wanted to attempt a different approach. In order to provide a platform which can accommodate a
variety of payloads, as well as enable improvements in the data and power buses [10], NUTS will have a
common backplane which provides communication and power distrubution, as a medium to interconnect
the different attached modules [11], which greatly simplifies rearranging or changing components during
designing and testing. NUTS is currently implementing the use of CubeSat Space Protocol (CSP) over
the backplane I2C bus for intermodular communication, as described in [12]. If successfully designed,
following CubeSats could be constructed by simply following the general outline, and selectively adding
or modifying components, making for a flexible platform. However, the most distinguished improvement
a common backplane brings is reliability, in the form of the ability to isolate misbehaving modules from
the system, making sure that a single failing module should not be able to put the entire system out of
play.
2.2.2 Electrical Power System
The responsibility of the EPS is to make sure that proper current and voltage is distributed and supplied
to the various subsystems at any given time. Power received from the solar panels during sunlight
exposure should charge the battery packs for operation during periods without sunlight [13]. The EPS
will not have any need to communicate with other modules, however it will provide statistics which other
modules can access over the backplane I2C bus.
3
2.2.3 Onboard Computer
The OBC will take on the role as the center of operational control, performing tasks which include [14]:
• Supervising other modules to ensure that they are functioning as intended by executing maintenance
routines.
• Processing and compressing captured data from the payload (IR camera).
• Transferring data to the radio module, to transmit to a ground station.
• Validating and interpreting instructions received from ground station.
2.2.4 Attitude Determination and Control System
In short terms, the main responsibilities of the ADCS are twofold; to ensure that the CubeSat will detum-
ble successfully after deployment, and to make sure that the satellite continuously rotates into a desired
orientation (generally pointing payload towards Earth) while in orbit. Part of this is the responsibility
for collecting information about the positional and rotational state of the satellite, like measuring the
Sun vector, as the main topic of this report will be.
2.2.5 Backplane sensors
The backplane contains multiple simple hardware elements, such as sensors which measures different
physical properties, like temperature or currents. Reading the statistics from one of these elements is
done directly through the I2C-bus. Each of these elements are connected to the bus through a hardware
interface where software functionality is not a possibility [11].
2.2.6 Radio
The inherent responsibility of the radio system is to ensure communication between ground stations and
the satellite, by receiving instructions and returning data. It also provides an outgoing beacon signal
at all times, making sure ground stations can listen in and be able to know when the satellite is in
communications reach. As a master unit on the backplane, the radio is able to reset or isolate other
modules, including the OBC. This ensures resilience to a wide array of possible crashes and bus errors,
and a mutual redundant responsibility with the OBC.
2.2.7 Payload
The responsibilities of the payload module is to acknowledge commands for the capture of IR-pictures,
and executing these [5]. Captured data needs to be transmitted over the backplane I2C bus to the flash
memory on the OBC for processing.
4
2.3 Assignment
2.3.1 Previous work on the ADCS
NTNU have previously launched two CubeSat projects, however unsuccessfully. During these, a lot of
work around the attitude estimation problem has been done, and the topic has undergone iterative changes
and incremental improvements. Svartveit [15] and Ose [16] made work on a discrete Kalman filter, which
was subsequently made into an extended Kalman filter in the work of Rohde [17]. Based on the work of
Psiaki [18] and Markley [19], Jenssen and Yabar [20] made comparisons of the estimation methods used
in the extended Kalman filter, by extending the quaternion estimation (QUEST) method to include non-
vectorized gyroscope measurements and prediction terms, making it more suitable for attitude estimation.
Rinnan [21] developed the EQUEST further, extending it to include attitude predictions and gyroscope
information in the cost function, as well as comparing the developed EQUEST method to a nonlinear
observer and combining the two.
Much of this previous work mentions using solar panels as a crude sun sensor for attitude determination,
however most list further investigation into this possibility as further work, along with that the main
challenge is compensating for the Earth albedo error.
2.3.2 This report
This report aims to give an introductory review of selected sensory technologies available for attitude
determination, and to document the effort of investigating the utilization of solar panel readings for this
purpose on the NTNU Test Satellite. Recognizing the limitations of the previously designed sun vector
generation model, an entirely new theoretical approach has been modeled and investigated. Designs for
experiments to verify the validity of this approach has been made, and MATLAB code to support testing
has been produced. An outline of the possible content of an algorithm for separating relevant inbound
sunlight information from disturbance are discussed.
5
Chapter 3
Preliminaries
3.1 Attitude terminology
Attitude: Orientation of a defined spacecraft body coordinate system with respect to a defined external
frame.
Attitude determination: Real-Time or Post-Facto knowledge, within a given tolerance, of the space-
craft attitude.
Attitude control: Maintenance of a desired, specified attitude within a given tolerance. Information
from attitude estimation and determination enables the attitude control to perform command engineer-
ing functions, like directional pointing of solar panels or antennas, or nadir control for Earth observing
payloads.
Attitude error: Low frequency spacecraft misalignment; usually the intended topic of attitude control.
Attitude jitter: High frequency spacecraft misalignment; usually ignored by ADCS; reduced by good
design or fine pointing/optical control.
3.2 Attitude representations
There are a number of different ways to express the rotations in three dimensional space, and thorough
descriptions of these can be found in most of the Master theses published in relation to the NUTS project,
where the estimation algorithms make great use of quaternion representation due to their suitability for
digital implementation and resilience to singularities. For this report we will not need to express a lot of
complex rotations, as the investigations made for the most part take place in the satellite body frame,
however there will be mentions of roll, pitch and yaw, and some use of simple rotations which can be
expressed in a satisfactory manner through the use of the Euler angles shown below.
6
3.2.1 Euler angles
Described by Leonhard Euler in 1776 [22], this representation of the orientation of a body is arguably the
most convenient and intuitive for a wide field of applications. To fully describe an orientation between
two frames, three parameters are needed; one angle for the rotation around the three frame axes. These
angles are best known under the names of roll, pitch and yaw, and are usually denoted by φ, θ and ψ.
Euler angles are commonly used in the definitions of R3 right hand rule rotation matrices about the x,y
and z-axis, which looks like the following:
Rx(φ) =
1 0 0
0 cos(φ) − sin(φ)
0 sin(φ) cos(φ)
(3.1)
Ry(θ) =
cos(θ) 0 sin(θ)
0 1 0
− sin(θ) 0 cos(φ)
(3.2)
Rz(ψ) =
cos(ψ) −sin(ψ) 0
sin(ψ) cos(ψ) 0
0 0 1
(3.3)
A rotation matrix R is typically used to describe a rotation between two coordinate frames, given three
successive rotations around each single, fixed axis of the frame in order; a rotation ψ around the z-axis,
θ around the y-axis, and φ around the x-axis. The entire rotation can be written as:
Rab = Rz(ψ)Ry(θ)Rx(φ) (3.4)
A given vector in, say, the BODY frame kb can be expressed in the NED frame kn by using a rotation
matrix:
kn = Rnb k
b (3.5)
And for the sake of illustrating the difference between Euler angles and quaternions, here rotations are
represented by quaternions as the following [23] [24]:
R(q) = (q24 − ‖q13‖2)I3×3 + 2q13q13> − 2q4[q13×] (3.6)
which obviously is not as perceptually intuitive, and would hence make a poor choice for this report as it
will attempt to illustrate a new concept in a fashion which should be easy to grasp. We will not go into
what the different components of the quaternions are, or how they are used, but an extensive review can
be found in the work of Rinnan [21].
7
3.3 Reference frames
The following coordinate frames can be involved in describing different aspects of the attitude of the
satellite:
3.3.1 Earth Center Inertial (ECI)
This reference frame is usually applied for orbital analysis of an Earth orbiting satellite, for inertial mo-
tion analysis and astronomy purposes. For these applications the ECI is considered a sufficiently inertial
and non-accelerating reference frame in the sense that its acceleration due to the Earth orbiting the sun
can be disregarded. It consists of a system of celestial coordinates i = [xi yi zi]>, with the positive
x-axis defined to point towards the vernal equinox, γ, which is the point where the sun crosses the Earth’s
equatorial plane when it goes from south north. The z-axis falls in line with the rotational axis of the
Earth, pointing towards the celestial north pole, and the y-axis completes the Cartesian coordinate frame
according to the right hand rule.
3.3.2 Earth Center Earth Fixed (ECEF)
The ECEF frame, e = [xe ye ze]>, use the center of the Earth as its origin, with its x- and y-axis
rotating with the Earth relative to the ECI frame with a rate of ωE = 7.2921 ∗ 10−5[rad/s] about
the z-axis. The positive x-axis is defined to point towards [latitude, longitude] = [0◦, 0◦], which is the
intersection between the Equator and the Greenwich meridian. As with the ECI, the y-axis completes
the frame according to the right hand rule.
3.3.3 North East Down (NED)
This is a local reference frame defined in the tangent plane on the surface of the Earth, with the x-axis
pointing towards north, and z-axis downwards perpendicular to Earth’s reference ellipsoid. The y-axis
completes a right handed orthogonal coordinate system, with the positive y-axis pointing towards East.
Earth’s reference ellipsoid is a mathematically defined surface fitted to approximate the shape of the
Earth, relative to the World Geodetic System
3.3.4 Orbit Frame
The origin of the orbit frame is located in the center of mass of the satellite, and coincides with the
origin of the body frame (see next paragraph). The entire orbit frame rotates with an angular veloc-
ity ωo relative to the ECI frame, and for a circular orbit ωo will be constant. The frame is spanned
by unit axis vectors [xo yo zo]>, where the zo-axis pointing in the satellite nadir direction, that is,
towards the center of the Earth. The yo-axis points in the direction of the negative orbit normal, and
the xo-axis is perpendicular to the radius vector, and coincides with the direction of orbital motion, the
linear velocity vector along the orbital trajectory, when the orbit is circular. Following this, for each
orbit the frame will rotate once and have two flips, making for a complete 360◦ turn. The attitude of the
satellite will be described due to how the body frame (section below) is oriented relative to the orbit frame.
8
Figure 3.1: Illustration showing the difference between Body, Orbit and ECI frame, image courtesy ofSunde (2005).
3.3.5 Body Frame
This frame, x = [xb yb zb]>, is attached to the satellite, and is the local frame which the attitude
measurements will be made and originally described in. In the body frame the axes coincide with the
principle axes of inertia, making the origin the center of mass of the satellite. The positive z-axis is defined
as the vector pointing outwards from the quadratic side of the satellite. The x- and y-axis are orthogonal
to the rectangular sides of the cube. The body and orbit frames will coincide when the satellite attitude
values are all zero in roll, pitch and yaw. An illustration can be seen in Figure 3.2.
9
Figure 3.2: Illustration of the NUTS Body coordinate system, image courtesy of Jenssen and Yabar(2011).
10
Chapter 4
Available sensors for attitude
determination
Attitude and attitude motion of a spacecraft describes the orientation and rotational motion about its
center of mass, and the computation of this orientation relative to either an inertial reference or some
object of interest is referred to as attitude estimation. This process is necessary in order to provide a
reference for the attitude control system. A commonly used technique is to utilize body measurements to
estimate the vehicle orientation, and comparing these measurements with known reference observations.
Another issue which must be taken into consideration in estimation techniques is the fact that vector
measurements will in practice be contaminated with noise. Especially measurement noise in particular
can contribute a significant factor at high frequencies, making it essential to subsequently filter the noise
by combining the measurements with models. In essence, the key issues in attitude estimation is avoiding
singularities, and providing satisfactory bias estimation [25]
An attitude determination system requires at least two vectors in order to estimate the attitude. The
NUTS CubeSat will contain three types of sensors for the ADCS system; a magnetometer, a sun sensor
and a gyroscope. This report will aim to improve on the model and validity of the calculated inbound sun
vector produced by the sun sensor, however, a brief selection of sensors used for attitude determination
and their abilities will be listed and described here.
Information provided by the sensors is combined and processed in the attitude determination system to
provide the best possible estimates at all times. Sensors commonly used in attitude determination sys-
tems can be divided into two different classes; inertial sensors and reference sensors. Inertial sensors are
sensors that measure rotation or translational acceleration relative to an inertial frame. These sensors
experience random drift and bias errors, and as a result, the errors are unbounded. Regular updates
based on references such as the Sun, stars, or the Earth can be used in order to correct the errors. The
gyroscope is an example of an inertial sensor. Reference sensors typically provides noisy vector observa-
tions at a low frequency [21]. Reference sensors give a vector to some object which position is known.
The rotation between the local body frame, and the frame in which the known vector is given, can then
be computed. With only a single measurement, the rotation around the measured vector is unknown. It
is therefore necessary either to have two different measurements, or to utilize information from the past,
e.g. by using a Kalman filter [15]. An example of such measurement is the angle between the craft and
the Sun, measured with a Sun sensor, or line-of-sight measurements of the position to the stars, provided
11
by a star tracker. These measurements must have a corresponding set of reference vectors in the reference
frame, such as a known Sun reference model, and maps of known observed stars. However, we must keep
in mind that the size and weight requirements of the satellite impose strict limitations on the choice of
sensors. The sensors of choice must be light weight, consume little power, and be of small size. The
vector measurement is a function of spacecraft attitude, but one sample from a reference sensor does not
provide full attitude information. Thus, two vector directions are needed for a complete estimation. Both
the sun sensor and the magnetometer are reference sensors.
4.1 GPS
Mainly three reasons can be pointed out for installing a GPS receiver on board the NUTS CubeSat. First
of all, to determine the attitude of the satellite, the magnetometer measurements will need to be compared
with the IGRF model, hence the need for position data which can be obtained using GPS. When using
the magnetic field for this purpose in the ADCS, it is imperative that the position is known. Second,
using multiple GPS antennas enables for attitude determination using GPS signals, an approach which
was explored in the work of Sundlisaeter [25]. Third, the GPS receiver could be utilized as an additional
payload to measure occultations in the lower atmosphere. However, utilization of a GPS receiver for this
purpose would require a dual frequency receiver, which is not necessary for determining the orbit of the
small satellite. Scientific experiments on occultations in the lower atmosphere was therefore dismissed,
as a dual frequency GPS receiver would cause the already tight budgets of the project to exceed their
limits, in the sense of volume, weight, power, and cost [15].
However, installing a GPS receiver on board a satellite in orbit around Earth is not a straightforward
task. Limitations were imposed by the Coordinating Committee for Multilateral Export Controls (Co-
Com) in the 1960s, with the intention to avoid the use of GPS in intercontinental ballistic missile-like
applications, demanding all GPS devices disabled for any GPS device detected to be traveling at speeds
higher than 1,900 km/h at altitudes higher than 18,000 m. Even though CoCom ceased to function in
1994, most manufacturers still apply these limits to GPS receivers, which disable the unit when either
one or both limits are reached [25] [15].
4.2 Star trackers
One of the most reliable sensors are the Star trackers, since they depend on stars which are orbit indepen-
dent and available anywhere in the sky, and are found used both as single units and in pairs. These are
optical devices which measures the positions of stars relative to the sensor, using photocells or a camera.
They are superior to any other attitude references, and determines attitude within a few arc-seconds of
the true attitude [26]. These sensors require high sensitivity, and are susceptible to a number of errors,
such as that they may easily become confused by reflected or artificial lighting, as well as a number of
optical sources of error. The star sensor compares pictures of star coordinates in the satellite body frame
to a on-board star catalog. The comparing provides a well defined 3-axis attitude representation, such
as the Euler parameters. The sensor may be modeled as the true attitude with added noise [27]. By
using simple geometry it is possible to determine the position of the observer based on which stars the
12
sensor registers. The star sensor is the most accurate attitude sensor, but is also heavier, more expensive,
and require more power than most other attitude sensors. This comes from the fact that star sensors
have extensive computer processing in order to produce their measurements from only a picture. Several
types of star sensors exists, and depending on their method of attitude acquisition they are star scanners,
fixed head star trackers, and gimbaled star trackers. In the past, a main disadvantage of the star sensors
has been their operating range and weight. They had low update rates, and could not operate if the
operating rates became too large, usually 10◦/min [26]. The Danish Technical University (DTU), have
developed a star sensor, µASC, which has greatly increased operating range while decreasing weight and
size [28]. However, a star tracker is still a large and expensive sensor to the extent that it is not feasible
to implement in a CubeSat design such as NUTS, especially when considering the baffle needed to shield
the sensor from Sun-, Earth- and Moonlight.
4.3 Gyroscopes
A gyroscope is an inertial sensor which measures the angular velocity about the sensor axis of the object
to which it is attached, relative to the inertial frame. Gyroscopes can measure rapid changes in the
attitude, and theoretically the satellite orientation can be obtained by integrating the measured angular
velocity. However, in order to be able to provide good estimation, the initialization of the gyroscope need
to be correct, and it is also important that the gyro bias is not too large. Due to the gyro bias, which is
inherent within all gyroscopes, gyroscopes can never be used single handedly in order to obtain attitude
estimates, and they should always be used in conjunction with other sensors [20]. Furthermore, gyro
biases are typically low-dynamic or approximately constant, such that the gyro can track the subject
body orientation up to a certain point. However, the inherent bias of the gyro will cause the attitude
estimates to drift and the gyroscope needs to be calibrated accordingly. The length of time a gyroscope
will provide acceptable measurements can vary. However, most modern gyroscopes provide high quality
measurement data at reasonable cost [25]. The design which is relevant for a project like ours are the
MEMS gyros [29], which is a type of gyros usually based on a tuning fork gyro principle, where a vibrating
fork is subjected to a steady rotation about its axis and the response is detected by the transducer results
from the Coriolis force [30].
4.4 Magnetometers
A magnetometer can only be used in orbit close to earth where the magnetic field is strong and well
modeled. As the NUTS is a Low Earth Orbit (LEO) spacecraft, this is feasible [15]. A magnetometer can
be used to obtain measurements of the flux density of the local magnetic field at the current location of
the satellite. By combining measurements from three mutually perpendicular magnetometers/axes, the
magnetic field including two components of its direction will be given in the body frame when the eventual
rotation between the body and sensor frame is known. By referring to a model or table of known values of
the Earth’s magnetic field, usable estimates of attitude can be made. As the real magnetic field varies in
magnitude and direction with its location and altitude, in addition to slowly changing with time, either an
enormous look-up table would have to be stored on board, or updates would have to be periodically trans-
mitted to the satellite. The drain on time, storage and computational effort this entails made it clear that
NUTS should rather use a mathematical model of the field. The most widely implemented model is the
13
International Geomagnetic Reference Field (IGRF), and this model was implemented on our satellite [31].
The information regarding local magnetic field conditions can also be used as a check on the measurement
accuracy of the carrier phase measurements used by the GPS attitude determination solution method
discussed by Sundlisaeter in [25].
Another issue which arises is that the use of magnetometers and magnetic torque coils are, if not mutually
exclusive during use, a serious local disturbance. Magnetometers are in general susceptible to interference
from spacecraft electronics, which mean that it’s important to consider magnetic radiation and shielding
when implementing satellite hardware and different component orientations in relation to each other [15].
Due to testing done by Busterud [32] which shows that ADCS performance is not degraded by alternating
between measuring and actuating, NUTS aim to handle this by switching between attitude determination
and attitude control, by scheduling the time when the coils are active.
4.5 Accelerometers
Accelerometers, which measures change in velocity, are sensors which seem like a natural choice to include
in inertial navigation systems. The accelerations experienced due to third bodies like the Sun, Moon and
Jupiter, are very small in low Earth orbit, and we can consider the Earth orbit as a celestially isolated case.
The resulting gravitational force is balanced out by the centripetal force, causing a resultant acceleration
of approximately 0 g, which is necessary to keep a stable, circular orbit [20]. In this report we consider
the case where the satellite is in a stable circular orbit around the Earth, meaning that the spacecraft is
in continuous free fall towards the Earth, meaning that net acceleration experienced by the spacecraft in
orbit will be tiny, and regular accelerometers will not be suited for this purpose; although accelerometers
can be used during ground testing, they are not favorable to utilize in a circular orbit [25].
4.6 Earth sensors / Horizon scanners
The Earth is always visible for satellites orbiting it, and with the knowledge of the orbit, a reference may
be acquired anywhere. An Earth sensor, or horizon scanners as they are also known as, determines the
Earths position relative to the satellite. Because of the approximated circular shape of the Earth, only
the roll and pitch part of the Euler angles can be determined from the measurements [26]. This sensor
can for instance be an infrared camera, or an optical instrument that detects the border between the
warm atmosphere and the cold cosmic background radiation. [20]. However, accurate horizon scanners
are relatively big and expensive sensors, and hence not suited for the NUTS [15]. Although, as a practical
example, the LEO satellite SPARTNIK use infrared detectors as Earth sensors, determining the satellite’s
pointing relative to the Earth, and was used for the following purposes:
• As a way to determine when the Earth is in the viewing area of the camera.
• As support for their attitude determination by Earth sensing.
The Earth-horizon sensors consist of two photo transistors whose output is a function of infrared radiation.
As can be seen in Figure 4.1, the infrared detectors are located on the top face of the spacecraft, one
on each side of the camera lens, mounted inside of a aluminum honeycomb structure with an opening of
14
Figure 4.1: SPARTNIK’s Earth Horizon detector
approximately 1 mm through the outer aluminum plate. The purpose of a small aperture is to aid in
limiting the field of view of both sensors. By mounting these sensors in such a way, the Earth will be the
only source of infrared radiation which will occupy the sensors combined field of view of approximately 40
degrees. This is known since at an altitude ranging from 300 to 700 km, the Earth will occupy between
145 to 130 degrees field of view of the camera’s face as it points towards Earth. Considerations must also
be given to the infrared radiation emitted by the moon and the sun. By careful mounting of the sensors, it
can be made reasonable to assume that the Earth will be the only body able to cause a maximum output
from both detectors simultaneously. Calibrations and/or adjustments of available fields of view might
be needed to avoid triggering on excessively wide incidence angles, depending on the sensor makeup and
orientation [33].
4.7 Sun sensors
The Sun provides a reference when the satellite is in line of view of it. Sun sensors are popular, ac-
curate and reliable, but require clear fields of view; the Suns visibility from the satellite is dependent
on orbit, and only in occurrence of an eclipse, the reference availability ceases. Obviously, Sun sensors
can only provide attitude knowledge when in the Sun, which is roughly two thirds of the time for LEO
spacecraft [34]. However, attitude knowledge is most useful in the Sun for many reasons. Pointing solar
arrays is only useful when in the Sun. Also, most missions would utilize attitude determination while the
spacecraft is lit because attitude control, high bandwidth communication, and many payloads require a
large portion of the spacecraft’s power. Power can be stored in batteries, and usually is, but a concept
of operation that pushes the majority of power use to the lit portions of the orbit is more efficient [34].
In principle the Sun sensor is a measurement of the Suns relative position with respect to the satellites
body frame. This position, expressed as a direction by a vector, is called the Sun vector measurement.
A common property in sun sensing equipment is that they tend to have a small size and low mass, a
wide field of view, medium/high accuracy, high reliability and radiation tolerance, all of which are im-
portant for use in a small satellite ADCS system. The typical field of view for a sun sensor is ±30◦,
with an accuracy of approximately 0.01◦ [35]. A sun sensor reference model is needed for the attitude
determination, and such a model is presented in the works of Rinnan [21], using the previous work of
Svartveit [15] and Sunde [26], and will be presented later in this report for the sake the readers continuity.
15
There exist numerous ways of measuring the sun vector. Depending on the mission requirements, a
number of different types of sun sensors may be used. It has been shown that COTS photo diodes can
be used as Sun sensors. Like COTS magnetometers, these sensors are small, inexpensive and require
very little power. They are typically found in the form of concepts such light dependent resistors or
light-to-frequency converters [17]. Sun sensors range from coarse sun sensors such as the Sun acquisi-
tion sensor (SAS) and attitude anomaly detector (AAD), further to the analog fine sun sensor such as
the quadrant sun sensor (QSS), and finally to the digital fine sun sensor (DSS) [26]. Recently, some
solar panel providers specializing on CubeSat components have started offering the integration of fine or
course Sun sensors, like small photo diodes, into the solar panel faces. These components are available
for any side of a CubeSat, in varieties between from 0.5U to 12U. Needless to say, these components are
costly and should not be obtained unless the project is absolutely sure of crucial components of the final
ADCS design, as there is little room for changing things about on these standalone multicomponent parts.
The sun sensors mounted on the satellite will in general be sensitive to every light source in space. Because
of light reflected from the Earth, it is important to use an Earth albedo compensation when computing
a sun vector, or else a large angular deviation might occur [36]. It can be noted that a DSS can have the
tradeoff of a limited field of view, but not be affected by the Earth albedo unless the Earth is adjacent
to the sun from the satellite point of view [37].
The NUTS CubeSat will attempt to utilize the solar cells as sun sensors, seeing as almost the entire
satellite is covered in solar cells, and being able to use these successfully will reduce some weight and
cost for not only this satellite, but also possibly future iterations of the ANSAT CubeSat (or similar)
projects. Not having to sacrifice solar panel surface for external sensors to have a clear line of sight also
means that we do not reduce our power generating capacity and battery charging rate. Solar cells are
not really sensors, but can be used to detect the direction to the Sun by monitoring the output current.
The output from a solar cell depends on the angle between the solar panel and the sun rays, but is highly
susceptible to the Earth albedo disturbance. It can also be mentioned that the problem with having solar
cells on only 5 out of 6 sides of the satellite can be somewhat remedied by for example attaching a light
dependent resistor on the payload carrying surface to determine whether it is pointing towards the sun
or not, although this approach has not been taken into consideration in this report.
16
Chapter 5
Designing a sun vector model
5.1 The solar cell
In short terms solar, or photovoltaic (PV), cells are constructed from materials which turn sunlight into
electricity, and are composed of layers of semiconductors such as silicon. Photons strike the solar cell and
are absorbed within the semiconductor material, which excites the electrons in the semiconductor and
cause a electric DC current to flow.
Figure 5.1: General layout of a solar cell
The output from a solar cell is mostly dependent on the sunlight angle of incidence with the cell and
the intensity of the inbound light. When measuring the output to determine the variables producing it,
current sensors are usually chosen over voltage sensors because variations in current output of the solar
panels are more responsive to the incidence angle of a light source. This leads to the assumption that
the currents I are dependent on the suns angle of attack αmax on the solar panel as
I = Imax sinαs (5.1)
where Imax is the current induced in the solar panels during direct, perpendicular sunlight, αs = π2 .
The experienced light by one panel alone will not necessarily change much with changing angle of at-
17
tack. It is the experienced light of one panel in together with, and in relation to the rest. As the
satellite changes attitude, some panels will get more and more light, while others will get less. Combin-
ing these results from all five solar panels makes it possible to determine the sun vector in the body frame.
5.2 A trigonometric approach
5.2.1 2 dimensions
Figure 5.2: 2D model of inbound sunlight on NUTS cross section. Image adapted from Svartveit (2003)
With the incoming sun vector striking two orthogonal sides of the satellite as seen in Figure 5.2, we can
establish a relationship between the angles of attack in both planes. Given the triangle similarity and
the sum of the two remaining angles in a right triangle, we have
α1 + α2 =π
2(5.2)
which gives us the further trigonometric relation
sin(α1) = sin(π
2− α2) = cos(α2) (5.3)
Assuming both panels have the same maximum output, applying (5.1) to two sides of the satellite, we
get
I1 = Imax sin(α1) (5.4)
I2 = Imax sin(α2) (5.5)
We can find the relation between the current outputs and the angles by dividing (5.4) with (5.5), which
results in
18
I1I2
=Imax sin(α1)
Imax sin(α2)=
sin(α1)
sin(α2)=
sin(α1)
cos(α1)= tan(α1) (5.6)
⇒ α1 = arctan(I1I2
) (5.7)
5.2.2 3 dimensions
Figure 5.3: 3D model of inbound sunlight on NUTS. Image adapted from Svartveit (2003)
If we receive a sun vector with a directional component that is not in the plane orthogonal to both the two
solar panels we’ve used until now, as can be seen in Figure 5.3, we have to modify our existing equations.
Again assuming that all solar panels have the same maximum output current, in three dimensions equation
(5.4) and (5.5) becomes
I1 = Imax sin(α1) cos(α3) (5.8)
I2 = Imax sin(α2) cos(α3) (5.9)
I3 = Imax sin(α3) (5.10)
where (5.10) is introduced by the output from a third solar panel, and allows us to calculate the third
and final angle and relate the third output current to the others. Dividing (5.10) with (5.8) yields
I3I1
=Imax sin(α3)
Imax sin(α1) cos(α3)=
tan(α3)
sin(α1)(5.11)
tan(α3) =I3I1
sin(α1) (5.12)
⇒ α3 = arctan(I3I1
sin(α1)) (5.13)
Assuming that the sun shines on positive x- and y-axis, and negative z-axis, we can combine the above
results to produce a sun vector in the body frame as follows
19
vBS =
sin(α1) cos(α3)
sin(α2) cos(α3)
− sin(α3)
(5.14)
When seen in comparison with (5.8), (5.9) and (5.10), we get
vBS =1
Imax
I1
I2
−I3
(5.15)
Seeing as Imax is a scalar component which does not contain any information regarding the direction
of the vector, we can discard it. This works well to our advantage, as Imax is directly dependent on
load resistance which hinges on several outside factors, such as which subsystems are in use and battery
status. The sun vector can then be written as
vBS =
X 0 0
0 Y 0
0 0 Z
I1I2I3
(5.16)
where X, Y and Z are ±1 , depending on which of the opposing sides of solar panels are producing power,
which is a restructuring of
vBS =
1 −1 0 0 0 0
0 0 1 −1 0 0
0 0 0 0 1 −1
Intx+
Intx−
Inty+
Inty−
Intz+
Intz−
(5.17)
where Int denotes the intensity of inbound light on each of the corresponding solar panels as demonstrated
in [20]. It can be noted that Intz+ is a void parameter, as this side in particular does not carry a solar
panel, but rather camera equipment.
The main weaknesses of this approach is that we process all inbound sunlight information indiscriminately,
as well as the fact that we have to assume inbound sunlight to originate from negative z-axis in the BODY
frame. This leaves the system wide open to disturbance, and effectively halves our range of sun vector
determination.
5.3 A conical shell model
By the previous approach, we harvest all available incoming sunlight information indiscriminately, and
piece it together in the form of a single sun vector given inbound sunlight angles of all three active solar
panels. A different approach is to treat each solar panel surface as a 2D sensor with a 1D output.
In attempt to combat the weaknesses left by the previous approach, a different model for determining
the inbound sunlight was gradually developed. As spatial trigonometry can be hard to visualize, it was
20
early recognized that a simple physical model was in order, and can be seen in Figure 5.4.
Figure 5.4: Paper model of a 1U CubeSat at 4:5 scale
Looking at the model from different angles for a while made it apparent that by knowing the angles of
inbound sunlight toward just two of the surfaces, it should be possible to produce two different vectors
which would produce an identical output. To put this idea in perspective, a some analogies can be made
to illustrate this concept further:
If we imagine a 2-dimensional vector inbound towards a fixed point on a 1-dimensional solar panel, we
could have two different vectors produce the same inbound 0 − 90◦ angle and thus the same output.
Extending this to a 3-dimensional vector towards a 2-dimensional solar panel results in a conical shell of
possible attack vectors around the axis normal to the solar panel plane, which all will produce the same
angle with the plane, and thus the same output. See Figure 5.5 and 5.6 for illustrations.
Figure 5.5: 2D vectors inbound on 1D panel
When the angle of aperture of these infinite conical shells are large enough, they will intersect with each
other, producing an intersection curve which runs along the conical shells, uniquely defined by the angle
θ about the cones axis of revolution. The thought here is that we should be able to use this information
to derive a common source for the light which produce these angles, in the form of a vector pointing
towards this source. Figure 5.7 illustrates the concept in its most basic state, with two orthogonal,
overlapping panels both experiencing a 45◦ inbound sunlight angle, resulting in two infinite orthogonal
cones with overlapping origins, producing a single common vector which can induce the measured angles.
However, when the combined angles with the planes falls short of 90◦, the cones will intersect in two
lines instead of one, meaning that two different vectors can produce the same angles, like the single
panel in the 1-dimensional case. And when the cones do not share a common origin, they will instead
21
Figure 5.6: 3D vectors inbound on 2D panel
Figure 5.7: 3D vector inbound on two 2D panels
produce an intersection curve, rather than a line. In general terms; when two infinite orthogonal cones
share a common origin (or share their axis of revolution with the axis of a common Cartesian coordinate
system) together possess a total half aperture of 45 degrees or more, they will intersect into each other
and produce an intersection curve along their shell.
5.3.1 With physically accurate origins
To express the problem mathematically, we need to note that our satellite spaces the opposing solar
panels (roughly 5 and 10 cm) away from the center of the satellite, or the origin of the BODY frame.
Seeing as the nature of a solar panel requires the entire panel to receive light in order to produce the
predicted current output, and that all inbound sunlight is parallel, we assume that the panels can be
modeled as a single point somewhere along the axis of the BODY frame. If we were to model the inbound
sunlight angles in the form of infinite conical shells onto two of the solar panel surfaces (YZ and XZ plane
chosen here for demonstration purposes), they would look like this in BODY frame coordinates:
22
y2 + z2 = r2x = (x− d1)2 tan2(αx) (5.18)
y = (x− d1) sin(θx) tan(αx) (5.19)
z = (x− d1) cos(θx) tan(αx) (5.20)
x2 + z2 = r2y = (y − d2)2 tan2(αy) (5.21)
x = (y − d2) sin(θy) tan(αy) (5.22)
z = (y − d2) cos(θy) tan(αy) (5.23)
where d1 and d2 are abitrary distances along x and y axis respectively, representing the solar panels and
the origins of the cones, α is the inbound sunlight angle producing the cone about the indicated subscript
axis where θ is the angle about the indicated axis of revolution, normal to the plane. It can be noted
that these cones produce symmetrical top and bottom parts, like proper mathematical cones do, but we
will only draw the cones outward from these points (x ≥ d1, y ≥ d2 respectively), as the other (bottom)
parts of the cones will expand into the satellite and be of no use to us. For the bottom parts of these
cones, we would rather use the same approach on opposing solar panels where available.
By combining the equation for the cone about the x-axis (5.18) with the cone about the y-axis (5.21) we
get the following equation:
z2 = z2
(y − d2)2 tan2(αy)− x2 = (x− d1)2 tan2(αx)− y2
(tan2(αy) + 1)y2 − 2d2 tan2(αy)y + d22 tan2(αy) = (tan2(αx) + 1)x2 − 2d1 tan2(αx)x+ d21 tan2(αx)
Choosing to use the expression for y from the cone about x (5.19), we can substitute it into the left hand
side and get
(tan2(αy) + 1)((x− d1) sin(θx) tan(αx))2 . . .
−2d2 tan2(αy)((x− d1) sin(θx) tan(αx)) + d22 tan2(αy) = (tan2(αx) + 1)x2 − 2d1 tan2(αx)x+ d21 tan2(αx)
Expanding and collecting the terms yields
((tan2(αy) + 1) sin2(θx) tan2(αx)− tan2(αx)− 1
)x2 . . .
+2(d1 tan2(αx)(1− (tan2(αy) + 1) sin2(θx))− d2 tan2(αy) tan(αx) sin(θx)
)x . . .
+d21 tan2(αx)((tan2(αy) + 1) sin2(αx)− 1
)+ 2d1d2 tan2(αy) tan(αx) sin(θx) + d2 tan2(αy) = 0
(5.24)
Which ties our variable of interest, θx, up against the distance along the cones axis of revolution, x. Both
αx and αy have known values. As expected, the intersection curve of the two cone shells appear to be
23
a parabola mapping values of θx into values of x. This holds for three dimensional case even if we are
investigating the projection onto the single variable x, as each x, θx pair correspond to a single y and z
value on the intersection curve along the cones. However, what is essential to note about this equation
is that only the lower degrees of the polynomial are depending on the axial offset translations (d1 and
d2) from the BODY reference frame origin. Knowing that a parabolic function approaches a straight line
when moving sufficiently far away from its vertex, we can investigate for which values of θx the function
stops changing, by differentiating (5.24) twice with regard to x:
f(x, θx) = ψ(θx)x2 + β(θx)x+ γ(θx) (5.25)
d2
dx2f(x, θx) = 2ψ(θx)
= 2((tan2(αy) + 1) sin2(θx) tan2(αx)− tan2(αx)− 1
)(5.26)
Where ψ, β, γ in (5.25) replace the corresponding parts of the polynomial, for the sake of readability. We
note that the expression is now only depending on a single variable, θx, and when setting (5.26) equal to
zero we get
2((tan2(αy) + 1) sin2(θx) tan2(αx)− tan2(αx)− 1
)= 0
(tan2(αy) + 1) sin2(θx) tan2(αx) = tan2(αx) + 1
sin2(θx) =tan2(αx) + 1
tan2(αx)(tan2(αy) + 1)
θx = sin−1
(±
√tan2(αx) + 1
tan2(αx)(tan2(αy) + 1)
)(5.27)
where θx are the two symmetrical theta angles about x which the parabolic intersection curve along cones
converges towards as it stretches out towards infinity. It can be noted that θx1 = −θx2.
5.3.2 With coinciding origins
As hinted onto earlier, what is interesting about this is that we can see that the equation for the inter-
secting θx when the cones extend towards infinity will be the exact same as if we were to set d1 and d2
equal to zero, effectively merging the centers/origins of the cones. The difference is that the latter model
will not produce intersecting curves, but rather generate straight lines outward along the intersection,
as long as the combined cone apertures are large enough, which can be seen easily by taking the same
approach to modeling the cones:
24
y2 + z2 = r2x = x2 tan2(αx) (5.28)
y = x sin(θx) tan(αx) (5.29)
z = x cos(θx) tan(αx) (5.30)
x2 + z2 = r2y = y2 tan2(αy) (5.31)
x = y sin(θy) tan(αy) (5.32)
z = y cos(θy) tan(αy) (5.33)
Again, by combining the equation for the cone about the x-axis (5.28) with the cone about the y-axis
(5.31) we get the following results:
z2 = z2
y2 tan2(αy)− x2 = x2 tan2(αx)− y2
y2(tan2(αy) + 1) = x2(tan2(αx) + 1)(yx
)2=
tan2(αx) + 1
tan2(αy) + 1
Using the expression for y from the cone about x (5.29), we can substitute the ratio between them into
the left hand side and get
(sin(θx) tan(αx))2 =tan2(αx) + 1
tan2(αy) + 1
sin2(θx) =tan2(αx) + 1
tan(αx)(tan2(αy) + 1)
θx = sin−1
(±
√tan2(αx) + 1
tan2(αx)(tan2(αy) + 1)
)(5.34)
The result is identical to the angle we found that the intersection between the displaced cones would
converge to in (5.27). This can be interpreted as that when the cones have origins on the body axis, and
|x|, |y| � d1, d2, it is safe to simplify the equation for the cones in such a way that they have overlapping
origins in the center of the body frame, which greatly reduce the complexity and computational load for
determining the intersection curves. The result shown here holds for all axis of the body frame, and it is
safe to assume that we are not interested in the details of the intersection curves close to the satellite, as
we are trying to pinpoint a source which is on average about 150 million kilometers away. A snapshot of
results from MATLAB simulations can be seen in Appendix B.
5.4 Sun reference model
In order to be able to utilize the measured body frame sun vector, we need to know the sun vector in
orbit or NED frame in such a way that we can estimate the rotation between the two.
25
A sun sensor reference model, relating the Sun’s position to the satellite orbital position is needed to
be able to utilize the Sun vector measurement in the attitude determination. Rinnan [21] presents such
a model, using the previous work of Svartveit [15] and Sunde [26]. The model assumes a simplification
where the Sun is modeled to revolve around the Earth, making for a geocentric approach. This approach
was demonstrated in the work of Kristiansen to not introduce inaccuracies of noteworthy magnitude [38].
The model will not be utilized in this report, but is presented here for the sake of relevance and continuity.
The elevation of the Sun varies periodically through the year and is given by:
εsun =2π
180sin(
Tsun365
2π) (5.35)
The parameter Tsun is the time in days since the Earth passed the vernal equinox, defined as the spring
equinox as seen from the Northern Hemisphere.
The azimuth angle between the satellite and the Sun is given by:
λsun =Tsun365
2π (5.36)
The time-varying sun sensor reference vector to be used by methods such as the developed EQUEST or
the nonlinear observer is:
r1 := Rθ(εsun)Rψ(λsun)r01 (5.37)
where r01 = [1 0 0]> and the rotation matrices are expressed using Euler angles from (3.2) and (3.3).
26
Chapter 6
Attitude determination testing
6.1 Previous sensor testing
As mentioned earlier, there exists many sensors that can be used for attitude estimation. Due to the
limitations of the NUTS CubeSat with regard to space and weight, which sensors to choose is a question
these factors, as well as the financial budget and a limited power supply. Because of these limitations
sun sensors, gyros and magnetometers were considered a better option than optical devices such as star
trackers and Earth horizon sensors. For the development of attitude estimation methods and prototype
design, the sun sensor was replaced by an accelerometer for testing purposes, due to lack of better testing
options and limited access to components. For the prototype sensor selection, only magnetometers, gyros
and accelerometers were considered. NUTS landed on purchasing and testing several complete Inertial
Measurement Units (IMUs), each with an accelerometer, a gyro and a magnetometer, all with 3 axes.
The three IMUs tested were the Xsens MTi, 9-DOF Razor IMU and CHIMU IMU [20].
The estimation methods used in testing (Extended Kalman filter and EQUEST) each use two indepen-
dent directional vectors and a gyroscope for attitude estimation. Hence, for ground testing on Earth
it is indifferent whether the methods are based on sun sensors measuring the direction to the sun, or
accelerometers measuring the gravitational force on Earth. The only difference will be the input data
and the reference vector for the algorithms. The methods referred to and tested by Jenssen and Yabar
[20] are developed for utilizing an accelerometer, a gyroscope and a magnetometer, but the accelerometer
can easily be replaced by sun sensors producing a reliable sun vector. This is important because, as we
mentioned earlier, an accelerometer is a bad choice to utilize in a circular Earth orbit due to the net
acceleration experienced will be about 0g.
Rinnan [21] continued testing using the 9-DOF Razor IMU, as well as an accelerometer for simulating
sun sensor input.
In the work of Jenssen and Yabar, there is an overview of how to replace the accelerometer measurements
with the hypothetical sun sensor measurements from the trigonometric approach sun vector model. With
some minor alterations, depending on the successful outcome of testing and the final form of the conical
shell sun vector model with what hopefully will prove to be an algorithm to reject disturbance, it too
can be fitted to replace the accelerometer measurements. One might even be able to model the output
from the algorithm to provide values which fits into their suggested implementation of simple directional
27
intensities by injecting it with assumed true intensities computed from rejecting the contribution of cer-
tain inbound light.
6.2 Sun sensor: Conical shell sun vector model
6.2.1 Description
Here can be seen an sequential plan for testing whether or not the conical shell model would hold up in
physical testing against actual current producing solar panels. With the preliminary planning and prepar-
ing done, testing should commence alongside other satellite experiments in January 2013. The readings
should be done in accordance with a fixed, constant intensity light source unless otherwise stated. If the
results from these tests backs up the conical model suggested earlier, further tests utilizing at least one
more panel should be formulated and carried out.
As can be seen in Figure 6.2, a mounting for the purpose of testing two panels simultaneously has been
produced, holding the same prototype solar cells as shown in Figure 6.1. It is precisely 90◦ degrees and
holds the fragile panels in place by double sided adhesive pads, which also ensures that the solar panel
prototypes are mounted flat on the metal surface, with no chance of leakage currents from the circuits.
MATLAB code meant to be used for displaying calculated sun vector from either sequences of data or
real-time data streams can be found in Appendix A.
It should also be mentioned with the future integration of these panels into the EPS in mind, that for
the comparison of the current outputs to be accurate, the solar cells used for sun sensing will have to be
on a common potential. The currently planned layout of the EPS suggests that only one cell on each
face of the satellite will share potential with corresponding cells on the other faces. This possibly means
that we will have to run dedicated wiring to extract the current values from each side of the satellite, to
bring it to the ADCS system.
6.2.2 Testing outline
This section will list a series of incrementally complex tests to see if the conical shell model is realizable.
A testing environment needs to be identified; for these tests, a dark room with a directional light source
should prove sufficient. Also, a means to log current output, preferably in two simultaneous channels
need to be acquired. Measurements either made offline into a structured format, or while connected to
MATLAB through DAQ should prove easiest, as some MATLAB code to interpret a pair of angles into
vectors have been made for simulation purposes. It can easily be modified to transform logged current
levels into registered sunlight angles through the use of the cosine relation between the two.
Test 1: See if output varies with light intensity at a given angle, and if so, how much. Can we define a
saturation level for our test environment by adjusting light intensity or distance from the source? Can
we get same output current by a certain intensity light at one angle, and a different intensity light at a
different angle? In other words, does the light source need to be of a well defined intensity in order for
28
Figure 6.1: Two prototype solar cells on a common board
us to uniquely define the angle by assessing the output current magnitude?
Test 2: Compare simple solar panel model with actual behavior of a single solar panel to see if panel
produce a sinusoidal output given specified angles of inbound sunlight.
Determine Imax and plot current as a function of degrees in two 180◦ sweeps; one along each axis of the
plane spanned by the solar panel. Will probably be easiest to have a fixed light source and rotate the
panel in a controlled manner.
Test 3: Investigate the effect of a disturbance light from an angle wider than the primary light. Does
the intensities accumulate? If they do, do they still accumulate even if the primary source provide light
intensity equal to that of an eventual recorded saturation level?
Test 4: Mount two panels close together with a 90◦ angle between them. Preferably on the outside of
a simple 90◦ angle iron equivalent. Repeat the motions from Step 1 and observe the output. Does one
panel yield max just as the other dies off? Account for discrepancies, possibly such as the fact that our
light source will not be a single point in space.
Test 5: Record the outputs from the dual panel setup at predetermined angles, and if possible record a
smooth transition between two known points in space, both located in the plane spanned by the normals
to the surfaces of the two panels. This should keep the test two dimensional and the produced sun vector
unique. Feed the recorded data (either offline or on the fly) to MATLAB, and convert the current values
into angles which can be sent to the script which draws calculated vectors.
29
Figure 6.2: Two solar cells mounted at a 90◦ angle
Test 6: Repeat step 5, but let the angles be produced from points in space which is not in the plane
spanned by the two surface normals, making the test three dimensional. This should produce ambiguous
readings from the panels, as in that the angles calculated from the current readings should be possible
to produce from light sources at two different points in space. The MATLAB program should illustrate
this by drawing both possible vectors. With the current setup, there will be no way of mathematically
identifying which one is the real vector, and which one is the produced mirror image.
30
Chapter 7
Disturbances and inaccuracies
This part could actually only be named Earth albedo effect, which actually deserves a chapter of it’s own
if one were to really get into the details, however a number of smaller scale elements can be mentioned,
like reflected sunlight off the Moon and the stars in general - which obviously plays a smaller part in the
big picture here. Also, there are several physical factors which can contribute to inaccurate production
of a true Sun vector, like solar panel mounting alignment and cell degradation, which the NUTS team
need to be aware of, but these are not the focus of this report.
7.1 Earth albedo effect
Due to the Earth reflecting energy from the sun, the accuracy of the incoming sun vector can be ques-
tioned. Moreover, only half the Earth is illuminated by the sun at any given time, and the satellite will
regularly have changing parts of this visible in it’s point of view. The albedo also varies greatly from
place to place on the Earth, e.g. the polar areas and sandy areas such as deserts does reflect much more
light than, say, ocean and forest areas.
Appel [36] describes the generation of a model for the light reflected by Earth, using data from the NASA
project Total Ozone Mapping Spectrometer [39] adapted to visible light. From this, patterns showing the
dependencies between latitude, longitude and Earth reflectivity, combined with data averages describing
standard deviations for each latitude provides enough information to randomize reflectivities and create
a statistic reflectivity model of the whole surface of the Earth. From these randomized reflectivities,
polynomial approximations describing the light components in NED frame received by a satellite in an
arbitrary location in orbit can be made by spanning a grid of satellite positions at a given altitude.
Doing this several times yields a statistical model with averages and standard deviations for all three
components, which can produce polynomials describing the intensity of the incoming light as a function
of the satellite latitude and longitude at a certain attitude. The paper concludes with that the model
can drastically improve attitude determination, with a worst case accuracy of 2◦.
31
Chapter 8
Preliminary disturbance suppression
algorithm
Completing a logic setup which can identify and suppress the Earth albedo effect is beyond the scope
of this report, however a number of observations can be made to help the investigation of the possible
content of an algorithm for separating relevant inbound sunlight information from disturbance.
For the sake of simplifying the illustrations of the ideas in this section, we will assume that we measure
the inbound sunlight continuously rather than sample it at discrete intervals.
It seems reasonable to expect a calculated sun vector to change in a continuous manner, that there should
be no instant jump in the produced vector unless the line of sight with the sun is broken, or a disturbance
suddenly appears. This underlines the beneficial value of keeping track of the history of observed sun
vectors. From this history the rate of change in the orientation of the vector can also be calculated, which
also could prove valuable to utilize for identifying disturbance.
The idea of that the change in sun vector orientation should be smooth can be manifested by identifying
states consisting of combinations of active solar panels which the system should or should not be allow to
transfer between. E.g. the system should not be able to produce sun vectors from output from one panel,
then its opposing panel without registering output from one of the solar panels in between. Though,
the fact that one of the satellite surfaces is not covered in solar panels leaves a number of transitions
unobservable.
In an ideal, disturbance free scenario with solar panels on all six sides, we could formulate the problem
as a system with 27 states in the form of a graph theory inspired cube; 6 faces, 8 vertices, 12 edges and 1
special case where there is absolutely no inbound sunlight. The faces of the cube represent a single active
panel, the edge 2 active panels, and the vertices 3 active panels. Choosing only the three-panel states as
vertices is a design choice given by the fact that these are obviously being the most commonly used state,
as it does not require inbound sunlight to be parallel to any one solar panel plane. The other states may,
for the sake of this representation, be thought of as transitions between vertexes, also known as edges.
Let us call the panels x, y and z, given their respective positions on the satellite BODY axis plane. As
opposing panels can not receive sunlight simultaneously, we can assign them values to show which of the
two are active; x = 1 for sunlight striking the panel on the positive side of the BODY x-axis, -1 for the
opposing one, and 0 for neither. Same with regard to y and z axis panels.
33
Figure 8.1: Visualization of graph inspired state cube, with black vertices and red edges
With these definitions, we can draw the aforementioned graph cube as depicted in Figure 8.1, where the
face [x, y, z] = [1, 0, 0] represents sunlight only hitting the panel on the positive x-axis, and corresponding
for all the other states made from combinations of x, y and z. 33 = 27 is our total number of states, as
expected, where only the 8 different 3-panel states are vertices in the model. What can be noted about
this model, is that transitions between the states should only be allowed in a certain pattern; the system
state can only move from one vertex to one of its three neighboring vertices, and it has to be through the
edge connecting the two (equivalent to 1 Hamming distance if you will, somewhat paraphrased). Also,
through a special case when only a single panel is active, represented by a face on the cube, it can move
to any vertex connected by an edge on the same face. When no panels are active [0, 0, 0], a jump to any
state can occur. This is equivalent to turning off the light, rotating the cube arbitrarily, and turning it
back on again. For the sake of the argument, such a rotation does not necessarily need to be arbitrary
- one might somehow be able to keep track of the satellites rotation during the blackout and calculate
where the sun vector is expected to be when it returns, but this would be well beyond the scope of this
report.
When describing this model, we made some simplifications and assumed ideal conditions, which never is
the actual case. This approach will not be able to identify or compensate for a continuous disturbance,
possibly varying in direction and intensity. And if an approach like this is to be made, either restrictions
will have to be loosened due to the fact that we can not observe the inbound sunlight on the negative
z panel directly, or a compensation will have to be in place, such that we can know the expected value
of this solar panel. What makes this more interesting in the context of this report is that if the conical
shell model approach described in this report should hold up in physical experiments, it should be able
to simulate the output of the missing solar panel.
To be able to separate unwanted information from the incoming sunlight, some logic will have to be
developed, like the idea that we can rule out incoming sunlight that strikes a solar panel on the opposite
panel of where we know the sun to be, meaning if we know all three sides receiving direct sunlight, we can
disregard light which hits the opposing three sides of the satellite entirely, or possibly calculate the effect
of on a third panel by knowing the disturbance that hits two of them. Also, the disturbance hitting a
34
panel which receives direct sunlight should be investigated, as proposed in the testing scheme. If it cause
any reaction at all, it will be in the form of generating additional current, tightening the cone of the panel
in question, which means that two of the intersection vectors will be slightly off, but the redundancy of
the system could possibly limit the effect the disturbance have on the system. In general, the aim will
be to compare generated vectors with each other. In a disturbance free environment, the system should
be able to provide three overlapping vectors, all being true Sun vectors, in addition to the false vectors
which will all be pointing in distances mirrored by the edge between the panels in question, making none
of them overlap. The chance of a high disturbance on more than one active panel is low, as it requires
the satellite to have an unfortunate attitude just as the Sun passes the Earth horizon from the satellite
point of view. If in a scenario with three panels receiving direct sunlight, and one of them receives a
disturbance, which means that it produces a tighter cone due to the higher current level, the panel can
be identified from it’s lack of ability to produce intersections with the other cones. Vectors produced by
Earth albedo influence should have slower rates of change, as the disturbance comes from a wide area,
covering an array of angles in the field of view compared to the single-spot origin of the Sun. And we
should also mention that seeing as the satellite face which carry the camera is supposed to face the Earth,
it should hinder much of the reflected sunlight from Earth from being detected, due to the lack of solar
cells on this side of the satellite. Thoughts like these will need to be expanded upon and combined into a
logic system which can interpret and handle disturbance in a satisfying manner, by hopefully being able
to calculate the amount of a polluted vector reading which is contributed by a source other than the Sun.
35
Chapter 9
Discussion
It may seem ambitious to develop a new, previously untested mathematical approach for something we
can model in a more convenient way by a simple trigonometric approach, so it seems reasonable to ask
ourselves; do we really need this? The answer is, well, both yes and no. What the satellite really do need
is a true, disturbance free Sun vector for the estimation algorithms, which can replace the accelerometer
measurements used during ground testing. Looking at previous theses, this has been suggested over a
number of years without much attention or effort really put into it. What is commonly suggested in
general is a compensation for the Earth albedo effect, which can induce quite large deviances from the
true Sun vector in the readings. This leaves us with two choices, either we carefully make a model of the
reflectivity of the Earth, as described in the work of Appel [36], or what this project has attempted to
undertake - an attempt to make a model which can dynamically compensate for disturbances experienced.
Whether or not it works, the logic derived along this project has sounded reasonable to both the author
and others, so investigating the possibility definitely seemed like a good idea. The mathematical concept
seems promising, even though physical testing and the actual disturbance rejecting algorithm needs to
be attended to.
It should also be mentioned that the actual implementation of the model into the physical system has
yet to be given much thought, so in future development we might run into unforeseen problems such as
sample rate limits, logical corner cases or problems with the actual signals we are trying to measure due
to the load on the batteries/EPS because of other subsystems drawing variable power - it’s hard to tell
at this point really.
36
Chapter 10
Closing remarks
10.1 Conclusion
In this report we have seen a new mathematical model developed for representing sun vectors in the body
frame coordinate system, based on the intersections of conical shells generated by the inbound 3D light
onto the 2D planes spanned by the satellite solar panels. The requirement for two panels to be able to
generate intersecting cones is that the two combined half apertures of the cones, which are depending on
the angle of inbound sunlight, is at least 45◦. This means that the combined angles of inbound sunlight
on the two solar panel planes can not exceed 90◦, as there is no mathematical way for the two panels to
experience a single-point, common light source at these angles.
The simplification of letting the spatially dislocated panels to be modeled as a single point in the center
of the satellite, the origin of the Orbit and Body coordinate frames, lets us model and calculate the
angles about the body frame axes which the intersection curves will converge against when propagating
away from the satellite. This assumption holds as long as we are not interested in the transient phase
of the parabolic intersection curve, which happens close to the satellite. This intersection curve will
approximate a dual sun vector inbound on the body frame origin, of which only one is true, while the
other is a mirror image generated by the inherent ambiguity of the underdetermined system. Through
valid combinations of solar panels, we can potentially calculate 8 different pairs of vectors to describe
inbound light on the satellite, all depending on which sides receive inbound sunlight.
Through enforcing expected rules of behavior of the Sun vector, we should be able to extract and com-
bine information from a selection of panels, and use information from others to negate the impact of
disturbance, or selectively discard information which we know to not carry Sun vector information. En-
suring that observed Sun vector orientation is continuous and, if possible, aligned with measured rotation
from gyroscopes, can make our system less susceptible to introduced disturbances and even help identify
them to use this information to negate their impact. As with the DSS mentioned in Chapter 4.7, Earth
albedo effect experienced when the Sun is close to the Earth from the satellite perspective will be hard
to separate from actual sunlight information. In the end, whether or not this model becomes a feasible
approach to implement on the satellite all hinges on its ability to reject disturbance.
Results from the algorithm processing the currents induced by the measured sunlight should be able to
37
provide filtered readings suitable to insert into the estimation algorithms without having to change too
much of the existing work, as there has already been given thought to how to implement Sun sensor
readings from the trigonometric approach described earlier in this report.
10.2 Further work
Whether or not this mathematical model holds up in physical testing remains to see, the first round of
preliminary testing is laid out and scheduled for January 2013, along other experiments on the satellite
hardware. If the first proof of concept is successful, then extended tests should be planned and carried
out shortly after.
If the necessary testing in a disturbance free environment proves successful enough for the model to
be able to identify isolated single-point light sources, then the real work of establishing a disturbance
rejecting algorithm begins. A general scheme needs to be carefully laid out, and corner-cases which can
confuse the algorithm identified.
Regardless of the success of this particular model, information from the sun sensor needs to replace ac-
celerometer readings alongside IMU measurements for estimator testing, as the satellite will not bring
the accelerometer into space.
38
Bibliography
[1] Ansat, the norwegian student satellite program. Internet. [Online]. Available: http://www.ansat.no
[2] Hincube. Internet. [Online]. Available: http://hincube.com
[3] Cubestar. Internet. [Online]. Available: http://www.cubestart.no
[4] The ntnu test satellite. Internet. [Online]. Available: http://nuts.cubesat.no
[5] M. Bakken, “Signal processing for communicating gravity wave images from the ntnu test satellite,”
Master’s thesis, Norwegian University of Science and Technology, 2012.
[6] R. Birkeland, “Nuts-1 mission statement,” 2011.
[7] Cubesat design specification, California Polytechnic State University Std., Rev. 12, 2009.
[8] K. I. M. Rokstad, “Utvikling av komposittramme for satellitt,” Master’s thesis, Norwegian University
for Science and Technology, 2012.
[9] (2003) Pc/104 specification version 2.5. PC/104 Embedded Consortium. [Online]. Available:
http://www.controlled.com/pc104faq/PC104SpecV2 5.pdf
[10] D. E. Holmstrom, “Databussen i en studentsatellitt,” Master’s thesis, Norwegian University of
Schience and Technology, 2012.
[11] D. D. Bruyn, “Power distribution and conditioning for a small student satellite; design of the nuts
backplane and eps module,” Master’s thesis, Norwegian University of Science and Technology, 2011
2011.
[12] A. Giskeoedegaard, “Implementing csp over i2c on ntnu test satellite,” NTNU, Tech. Rep., 2012.
[13] L. E. Jacobsen, “Power system of the ntnu test satellite; backplane study and design of the eps,”
Master’s thesis, Norwegian University of Science and Technology, 2011.
[14] D. E. Holmstrom, “Software and software architecture for a student satellite,” 2012, pre-project for
masters thesis.
[15] K. Svartveit, “Attitude determination of the ncube satellite,” Master’s thesis, NTNU, 2003.
[16] S. S. Ose, “Attitude determination for the norwegian student satellite ncube,” Master’s thesis,
NTNU, 2004.
[17] J. Rohde, “Kalman filter for attitude determination of student satellite,” Master’s thesis, NTNU,
2007.
[18] M. L. Psiaki, “Attitude-determination filtering via extended quaternion estimation,” Journal of
Guidance, Control, and Dynamics, vol. 23, no. 2, pp. 206–214, Mar.-Apr 2000.
39
[19] F. L. Markley and D. Mortari, “Quaternion attitude estimation using vector observations,” The
Journal of the Astronautical Sciences, vol. 48, no. 2-3, pp. 359–380, Apr.-Sep. 2000.
[20] K. L. Jenssen and K. H. Yabar, “Development, implementation and testing of two attitude estimation
methods for cube satellites,” Master’s thesis, NTNU, 2011.
[21] T. B. Rinnan, “Development and comparison of estimation methods for attitude determination,”
Master’s thesis, NTNU, 2012.
[22] L. Euler, “Formulae generales pro translatione quacunque corporum rigidorum (general formulas for
the translation of arbitrary rigid bodies),” Novi Commentarii academiae scientiarum Petropolitanae,
vol. 20, pp. 189–207, 1776.
[23] P. C. Hughes, Spacecraft Attitude Dynamics. Dover Publications, 2004.
[24] J. Crassidis, F. Markley, and Y. Cheng, “Survey of nonlinear attitude estimation methods,” Journal
of Guidance, Control, and Dynamics, vol. 30, no. 1, January, February 2007.
[25] T. Sundlisaeter, “Spacecraft attitude and orbit estimation using gps and inertial measurements,”
Master’s thesis, NTNU, 2012.
[26] B. O. Sunde, “Sensor modelling and attitude determination for micro-satellite,” Master’s thesis,
NTNU, 2005.
[27] E. Kyrkjeboe, “Three-axis attitude determination using magnetometers and a star tracker,” Master’s
thesis, NTNU, 2000.
[28] Joergensen, Denver, Betto, and Joergensen, “Micro asc - a miniature star tracker,” Small Satellites
for Earth Observation - 4th International Symposium of the International Academy of Astronautics,
pp. 157–162, 2003.
[29] F. S. Holberg, “Design of attitude estimation and control system for a cube satellite,” Master’s
thesis, NTNU, 2012.
[30] B. Vik, Integrated Satellite and Inertial Navigation Systems. Department of Engineering Cybernet-
ics, NTNU, 2009.
[31] Z. Tudor, “Design and implementation of attitude control for 3-axes magnetic coil stabilization of a
spacecraft,” Master’s thesis, NTNU, 2011.
[32] B. E. Busterud, “Orienteringsregulering av mikrosatellitter,” Master’s thesis, NTNU, 2003.
[33] C. Wilkening and Divyesh, “Spartnik microsatellite attitude determination, control and stabiliza-
tion,” San Jose State University, Tech. Rep., 2001.
[34] J. A. Bowen, “On-board orbit determination and 3-axis attitude determination for picosatellite
applications,” Master’s thesis, California Polytechnic State University, 2009.
[35] C. D. Hall, “Spacecraft attitude dynamics and control,” Lecture notes, Department of Aerospace
and Ocean Engineering, Virginia Tech, March 2003.
[36] P. Appel, “Attitude estimation from magnetometer and earth-albedo-corrected coarse sun sensor
measurements,” Acta Astronautica, vol. 56, pp. 115–126, 2004.
[37] F. Boldrini and E. Monnini, “The officine galileo digital sun sensor,” 3rd IAA Symposium on Small
Satellites for Earth Observation, 2001.
[38] R. Kristiansen, “Attitude control of mini satellite,” Master’s thesis, NTNU, 2000.
40
Appendix A
MATLAB code
1 %draw satellite
2 drawCube([0,0,0],1)
3
4 hold on
5 axis equal
6 axis([-1000 1000 -1000 1000 -1000 1000])
7
8 grid on
9 %box on
10 %axis tight
11 %view([130,30])
12 view([155,30])
13 xlabel(’x-axis’)
14 ylabel(’y-axis’)
15 zlabel(’z-axis’)
16 title(’The graph in three-space.’)
1 function drawCube ( origin, size )
2 x=([0 1 1 0 0 0;1 1 0 0 1 1;1 1 0 0 1 1;0 1 1 0 0 0]-0.5)*size+origin(1);
3 y=([0 0 1 1 0 0;0 1 1 0 0 0;0 1 1 0 1 1;0 0 1 1 1 1]-0.5)*size+origin(2);
4 z=([0 0 0 0 0 1;0 0 0 0 0 1;1 1 1 1 0 1;1 1 1 1 0 1]-0.5)*size+origin(3);
5 for i=1:6
6 h=patch(x(:,i),y(:,i),z(:,i),’w’);
7 set(h,’edgecolor’,’k’)
8 end
9 end
1 function drawCones( alpha_XZ_deg, alpha_YZ_deg )
2 %Function for drawing cones and intersection vectors for
3 %coinciding origin cones produced by input angles of incidence.
4
5 %input light angle calculated by XZ- and YZ-bodyplane solar panel current (0-90 deg)
6 % alpha_XZ_deg = 55;
7 % alpha_YZ_deg = 25;
8
9 %------------------------------------
42
10 %-----Generate cone about X-axis-----
11 %------------------------------------
12 alpha_YZ = alpha_YZ_deg * 2*pi/360;
13
14 %cone aperture halfangle
15 alpha_x = pi/2 - alpha_YZ;
16
17 %discrete running vectors for calculating/displaying
18 x_x = linspace(0,10 ,25);
19 theta_x = linspace(0,2*pi,100);
20 [x_x,theta_x] = meshgrid(x_x,theta_x);
21
22 %calculate z and y based off free variables x and theta about x
23 z_x = x_x.*cos(theta_x)*tan(alpha_x);
24 y_x = x_x.*sin(theta_x)*tan(alpha_x);
25
26 %------------------------------------
27 %-----Generate cone about Y-axis-----
28 %------------------------------------
29 alpha_XZ = alpha_XZ_deg * 2*pi/360;
30 alpha_y = pi/2 - alpha_XZ;
31 y_y = linspace(0,10 ,25);
32 theta_y = linspace(0,2*pi,100);
33 [y_y,theta_y] = meshgrid(y_y,theta_y);
34 z_y = y_y.*cos(theta_y)*tan(alpha_y);
35 x_y = y_y.*sin(theta_y)*tan(alpha_y);
36
37 %------------------------------------
38 %-Calculate intersection theta angles and vectors
39 %------------------------------------
40
41 Tx = tan(alpha_x);
42 Ty = tan(alpha_y);
43
44 theta_x_isct_1 = asin(sqrt((Tx^2 + 1)/(Tx^2*(Ty^2 + 1))));
45 theta_x_isct_2 = pi - theta_x_isct_1;
46
47 v_size = 15;
48 v_1 = [v_size v_size*sin(theta_x_isct_1)*Tx v_size*cos(theta_x_isct_1)*Tx];
49 v_2 = [v_size v_size*sin(theta_x_isct_2)*Tx v_size*cos(theta_x_isct_2)*Tx];
50
51 %------------------------------------
52 %----------------Draw----------------
53 %------------------------------------
54
55 %clear current figure
56 clf
57
58 %set up figure and draw satellite
59 run()
60
43
61 %draw cone 1, about x-axis
62 mesh(x_x,y_x,z_x,x_x)
63
64 %draw cone 2, about y-axis
65 mesh(x_y,y_y,z_y,y_y)
66
67 %draw intersection vectors
68 quiver3(0, 0, 0, v_1(:,1), v_1(:,2), v_1(:,3), ’-b’,’LineWidth’,3)
69 quiver3(0, 0, 0, v_2(:,1), v_2(:,2), v_2(:,3), ’-b’,’LineWidth’,3)
70
71 hold off
72 end
1 function drawConesActual( alpha_XZ_deg, alpha_YZ_deg )
2 %Function for drawing cones and intersection vectors for
3 %spatially dislocated origin cones produced by input angles of incidence.
4
5 %input light angle calculated by XZ- and YZ-bodyplane solar panel current (0-90 deg)
6 % alpha_XZ_deg = 55;
7 % alpha_YZ_deg = 25;
8
9 %------------------------------------
10 %-----Generate cone about X-axis-----
11 %------------------------------------
12 alpha_YZ = alpha_YZ_deg * 2*pi/360;
13
14 %cone aperture halfangle
15 alpha_x = pi/2 - alpha_YZ;
16
17 %discrete running vectors for calculating/displaying
18 x_x = linspace(0.5,800 ,2000);
19 theta_x = linspace(0,2*pi,100);
20 [x_x,theta_x] = meshgrid(x_x,theta_x);
21
22 %calculate z and y based off free variables x and theta about x
23 z_x = (x_x-0.5).*cos(theta_x)*tan(alpha_x);
24 y_x = (x_x-0.5).*sin(theta_x)*tan(alpha_x);
25
26 %------------------------------------
27 %-----Generate cone about Y-axis-----
28 %------------------------------------
29 alpha_XZ = alpha_XZ_deg * 2*pi/360;
30 alpha_y = pi/2 - alpha_XZ;
31 y_y = linspace(0.5,800 ,2000);
32 theta_y = linspace(0,2*pi,100);
33 [y_y,theta_y] = meshgrid(y_y,theta_y);
34 z_y = (y_y-0.5).*cos(theta_y)*tan(alpha_y);
35 x_y = (y_y-0.5).*sin(theta_y)*tan(alpha_y);
36
37 %------------------------------------
38 %-Calculate intersection theta angles and vectors
44
39 %------------------------------------
40
41 Tx = tan(alpha_x);
42 Ty = tan(alpha_y);
43
44 theta_x_isct_1 = asin(sqrt((Tx^2 + 1)/(Tx^2*(Ty^2 + 1))))
45 theta_x_isct_2 = pi - theta_x_isct_1
46
47 v_size = 125;
48 v_1 = [v_size v_size*sin(theta_x_isct_1)*Tx v_size*cos(theta_x_isct_1)*Tx];
49 v_2 = [v_size v_size*sin(theta_x_isct_2)*Tx v_size*cos(theta_x_isct_2)*Tx];
50
51 %------------------------------------
52 %----------------Draw----------------
53 %------------------------------------
54
55 %clear current figure
56 clf
57
58 %set up figure and draw satellite
59 run()
60
61 %draw cone 1, about x-axis
62 mesh(x_x,y_x,z_x,x_x)
63
64 %draw cone 2, about y-axis
65 mesh(x_y,y_y,z_y,y_y)
66
67 %draw intersection vectors
68 quiver3(0, 0, 0, v_1(:,1), v_1(:,2), v_1(:,3), ’-k’,’LineWidth’,3)
69 quiver3(0, 0, 0, v_2(:,1), v_2(:,2), v_2(:,3), ’-k’,’LineWidth’,3)
70
71 hold off
72 end
45