Advances in the Development of the Attitude Determination and Control System of the CubeSat MOVE-II
Advances in the Development of the Attitude Determination and Control System of the CubeSat MOVE-II
Abstract
MOVE-II (Munich Orbital Verification Experiment) will be the first CubeSat of the Technical Univer-
sity of Munich (TUM) utilizing a magnetorquer-based active attitude determination and control system
(ADCS). The ADCS consists of six circuit boards (five satellite side panels and one central circuit board in
satellite stack), each equipped with a microcontroller, sensors and an integrated coil. The design enables
redundancy and therefore forms a fault-tolerant system with respect to sensors and actuators. The paper
describes the hardware implementation, algorithms, software architecture, and first test results of the inte-
grated ADCS on the engineering unit. A possibility to upgrade and extend our software after launch will
enable further research on new and innovative attitude determination and control strategies and distributed
computation on satellites. The MOVE-II flight unit is in the integration and test phase with an intended
launch date in early 2018.
1. Introduction
Owing to relatively low costs necessary for development and launch, and the opportunity to use commercial off-
the-shelf (COTS) components, CubeSats1 are being developed in universities and companies all over the world. They
enable small payloads to get access to space and students to obtain hands-on experience about spacecraft technologies.2
MOVE-II3 is a one Unit (1U) CubeSat (10 × 10 × 10 cm3 ), which is being developed by students at the Technical Uni-
versity of Munich (TUM). The project is a cooperation between the Institute of Astronautics (LRT) and the astronautical
student research group Wissenschaftliche Arbeitsgemeinschaft für Raketentechnik und Raumfahrt (WARR) of TUM.
The goal of the MOVE-II mission is to test, verify and qualify a new satellite bus for future mission with demanding
scientific payloads, evolving the subsystems that were developed in-house for TUM’s first CubeSat First-MOVE4 and
applying the lessons learned5 from that project. As payload of MOVE-II, the performance and degradation of novel
solar cells in outer space shall be investigated.6 The launch into a 575 km sun-synchronous orbit (SSO) is scheduled
for early 2018. The assembled engineering model (EM) of MOVE-II is illustrated in Figure 1 and 2.
Figure 1: The assembled engineering model of the Figure 2: Top view of the assembled engineering
MOVE-II satellite model of the MOVE-II satellite
Copyright © 2017 by the authors. Published by the EUCASS association with permission.
MOVE-II ADCS
As opposed to its predecessor mission First-MOVE, MOVE-II will be the first satellite of the LRT that features
a magnetorquer-based active ADCS. The mission and payload of MOVE-II requires two different control modes: A
B-Dot controller is implemented to reduce the initial angular velocities of the CubeSat after ejection from its deployer.
After successful completion of the detumbling maneuver, the top side, featuring the payload and the solar cells of the
satellite, is pointing towards the sun. The top view is illustrated in Figure 2. Sun pointing ensures enough power for the
satellite while maintaining the orientation of the payload. The attitude of the satellite will be estimated by an Extended
Kalman Filter (EKF) fusing sensor data from magnetic field sensors, gyroscopes and sun sensors. The ADCS hardware
consists of six printed circuit boards (PCB) in total. This hardware design represents a control system with redundant
actuators and sensors, and thus yields in a highly redundant and fault-tolerant ADCS, which enables continuity even
with failures in the redundant control panels. The ADCS software can be upgraded and extended even after launch.
This enables flexible and powerful research, which provides the possibility to investigate new and innovative attitude
determination and control strategies once in orbit.
The upcoming sections give an insight into the development and design criteria of our ADCS. The paper is
structured as follows: At the beginning the hardware architecture and components of the ADCS are described. Second,
the attitude determination and control concept are introduced. Moreover, a test result for the detumbling control is
shown. The third part of the paper presents the software architecture and features. Finally, a short conclusion is given.
2. Hardware
This section presents the design of the ADCS hardware including the magnetorquers and the sensors which are utilized
for attitude estimation.
4 Sidepanels
Printed Circuit Board (PCB) integrated magnetorquer coils are constructed out of square shaped PCB traces
directly inside the PCB. Such printed coils are robust and space-saving, allow stable manufacturing, and lower the in-
tegration time of the satellite. This makes printed coils a preferred choice as magnetorquers for the MOVE-II CubeSat.
The coils are described in section 2.4.
To generate a magnetic field vector in any desired direction, at least three magnetorquer coils need to be mounted
perpendicular to each other. As the inner side of the body is already largely occupied by other subsystems, we decided
to use the PCBs with integrated coils as outer hull of the satellite. One board is located in the inner stack, as the S-band
antenna occupies the bottom side of the satellite. The outer panels, called Sidepanels and Toppanel, are also used for
solar cells and payload. Figure 3 shows the arrangement of all ADCS PCBs on the satellite. Additionally to the coils,
each panel is also equipped with a dedicated coil driver, microcontroller and several attitude determination sensors.
The ADCS mainboard, referred to as Mainpanel, forms the central, non-redundant element of the system. It is located
in the board stack and connected to the rest of the satellite systems via a common PC/104 interface. The data exchange
between the Mainpanel and the command and data handling system (CDH) of the satellite is realized via four-wire SPI.
Also all the Sidepanels and the Toppanel are connected via SPI to the central Mainpanel.
2
MOVE-II ADCS
All four Sidepanels and the Toppanel are electrically equal, therefore it is possible to run exactly the same
software binaries on all five outer panels.
Figure 4 depicts all major components and electrical connections between all panels. The Mainpanel is the central ele-
ment of the system. The Sidepanels are connected over individual connectors to the Mainpanel, whereas the Toppanel
utilizes some pins of the PC/104 connector exclusively.
Figure 4: Overview of the detailed ADCS architecture. It consists of a Mainpanel, four Sidepanels and a Toppanel
which is electrically equal to a Sidepanel. Each panel is equipped with a nine degree of freedom (9 DOF) sensor which
consists of a three-axis magnetometer, a three-axis gyroscope, and a three-axis accelerometer (unused). The outer
panels each feature one additional sun sensors.
The chosen microcontroller family on all panels is Atmel AVR XMega which was test flown on a sounding
rocket experiment in 2014.7 It features direct memory access (DMA) between the panels and to the CDH to enable the
necessary system performance. The outer panels feature a smaller Atmel ATxmega128A4U microcontroller utilizing
44 pins,8 whereas the Mainpanel integrates an ATxmega256A3U microcontroller utilizing 64 pins and a larger mem-
ory.9 The additional pins are used for interfacing the Sidepanels and the Toppanel. Additionally, the Mainpanels and
Toppanels microcontroller Program and Debug Interface (PDI)10 is connected to the CDH to enable easy software up-
grades. The Sidepanel microcontrollers PDI is connected to the Mainpanel for upgrading and reflashing the Sidepanels
software.
The Sidepanels and the Toppanel are connected over two individual SPI buses to the Mainpanel. The panels are
grouped in a way that if one bus fails (e.g. by electrical short circuit caused by one broken Sidepanel microcontroller),
the system can still make use of all three working axes on the other bus to continue attitude determination and actuation.
The only non-redundant loss in such a case would be two or three sun sensors of five available sensors. All other sensors
are redundant (see section 2.3). All sensors on each panel are connected to the logically same microcontroller interface
to enable exact double use of the needed driver code.
The coil integrated in each board and actuated through the coil driver is described in section 2.5. The actuation
of all coils is set by the microcontroller of the Mainpanel, whereas each distributed microcontroller takes care of the
current control of its own associated coil. An additional feature of the Mainpanel is the possibility to cut off the power
of the five ADCS Panels. The switching circuits are constructed from discrete MOSFETs. The 3.3 V and 5 V power
supply of the Panels can be switched separately to enable smart power saving, help on-orbit debugging, and allow
isolation and disconnecting of potentially malfunctioning components.
2.3 Sensors
At least two non-parallel vector measurements are required to determine the absolute attitude.11 The two distinct
attitude vectors are obtained from the sun position sensor NANO-ISS60 by SolarMEMS and the three-axis magnetic
3
MOVE-II ADCS
field sensor BMX055 from Bosch Sensortec which is also equipped with a temperature sensor in it. The analog sun
position sensor uses four photo diodes in a squared configuration which are covered by a pinhole. Depending on the
incident angle of the sun, the photo diodes are partly illuminated. From the four analog output signals the sun vector
can be calculated. The field of view is 120°. A sheet of 100 µm thick CMX glass from Qioptiq is attached on the sensor
to protect it from radiation damage caused by charged particles. The analog output of the sensor is additionally filtered
by means of a simple, first-order RC lowpass with a 25 Hz cut-off frequency. The internal analog digital converter of
the microcontroller measures the voltage with a 12 bit resolution.8, 9
The BMX055 features three independent sensor modules in one package: a three-axis magnetometer, three-axis
gyroscope and three-axis accelerometer. The microcontroller receives the sensor data digitally via SPI. All control
parameters such as the range, readout rate and the amount of values to average from, can be set within its software
feature set.12 The sensors are placed directly in the center of the panels to measure the magnetic field of each individual
coil. Since each panel features a BMX055 sensor, the measurements are six-fold redundant. This allows us to disable
most of the BMX055 for powersaving and switch to another sensor in case of a malfunction. The magnetometers,
the sun sensors and the gyroscopes are utilized for attitude estimation (see section 3.1). The accelerometers are not
employed for determining attitude. In addition to the introduced sensors, the panels are equipped with four temperature
sensors each. The temperature sensors are placed in a way to allow later on-orbit debugging in case of hardware failures
and are used by the Thermal subsystem to get an overall thermal view of the satellite. There are three Maxim Integrated
1-Wire DS18B20U sensors and another temperature sensor inside the BMX055. The 1-Wire sensors have a accuracy
of 0.5 ◦C in the the range from −10 ◦C to 85 ◦C and they are resistant to radiation.13
2.4 Coils
The satellite features six coils as magnetorquers. Five identical coils are integrated inside the four Sidepanels and the
Toppanel, and a different coil in the Mainpanel. Figure 5 and 6 show a rendering of the coils. The coils extend over
the six inner layers of the PCBs. The different designs are due to different structural constraints of the panels and the
presence of electronics on the external PCB layers. The coil design parameters are optimized to minimize the power
consumption of each coil. The Side- and Toppanel coils have a size of 65 × 67 mm2 , comprising a total of 13 windings
per layer with a track width of 988 µm and thickness of 35 µm. The Mainpanel coil has a size of 65 × 67 mm2 with 15
windings per layer, having a track width of 1248 µm and thickness of 35 µm. The optimal operation voltage is 1.5 V,
generating a dipole moment of 0.05 A m2 per coil at room temperature. The resulting 0.1 A m2 dipole moment per axis
is a value that has been targeted by other CubeSat missions,14–16 and has therefore been used as a reference for the
coil design process. The power consumption for two Sidepanels at the targeted dipole moment is 0.76 W. This is only
needed during detumbling and experimental maneuvers. The nominal power consumption will be much less, as we
particularly focused on reducing all residual dipole moments on the whole satellite.
Figure 5: Rendering of the Side- and Toppanel coil Figure 6: Rendering of the Mainpanel coil
4
MOVE-II ADCS
The coil driver is made of discrete components. Figure 7 gives an overview of the schematics. A first stage converts the
5 V input voltage to a constant current by means of a buck converter.17 The buck converter is operated with a 512 kHz
pulse-width modulated (PWM) signal generated by the microcontroller. An additional sense resistor (Rload) enables
active control of the coil current to compensate temperature dependencies. In a second stage, a H-bridge circuit enables
to set the coil current direction.17
Figure 7: Schematics of the implemented coil driver. The left side (with main components Q1, D1, L1 and C2)
forms the buck converter. The right side (Q2-5) forms the H-bridge. Rload is the sense resistor used for coil current
measurement.
Estimating attitude knowledge is required for advanced attitude control methods, which utilizes a state feedback.
MOVE-II facilitates an EKF for state estimation. Furthermore, the Singular Value Decomposition (SVD) method is
implemented as a deterministic method, which is used for sanity check and initial state estimation. Referring to Vinter18
the SVD-method is a fast and robust method to solve Wahba’s Problem.19 Using two different vector observations, the
sun vector and the Earth’s magnetic field vector, the attitude can be determined for one time instant. Attitude estimators
need reference models and measurements as inputs. Since the magnetometer and the sun sensor provide a measurement,
corresponding reference models have to be implemented to provide the vectors in a reference frame. The sun position
model which is well described in Montenbruck20 and the International Geomagnetic Reference Field 12 (IGRF 1221 )
for Earth’s magnetic field calculation, are used. The IGRF 12 model requires the orbital position. A commonly used
method to propagate an orbit is the Simplified General Pertubation 4 (SGP4, described in Hoots22 ) model which has
been implemented on several CubeSat missions.14, 16, 23 This orbit propagator requires a Two-Line Element (TLE) set
and the Julian Date as inputs in order to obtain the position of the satellite in orbit. For the magnetic field model, Earth’s
rotation has to be taken into account. The model described in Jensen,14 was selected to be used. The implementation
of the SGP4 and IGRF 12 is based on the work of Jensen.14
Alternatively, the GPS device, which is featured on the CDH board, can be used for position determination.
However, the GPS sensor usage for the attitude determination concept is not intended in the primary mission phase.
The GPS performance will be a research activity for investigation in space. The Figure 8 illustrates the architecture of
the attitude determination system.
An approach which estimates the attitude and the gyroscope bias is considered. Let the measured angular rate be given
by the three-axis gyroscope model described as follows:11, 25
ω̃ = ω + β + ηv (1)
β̇ = ηu (2)
5
MOVE-II ADCS
TLE Time
Julian Date
Magnetometer
SVD-Method
Extended Sun Sensor
Kalman Filter
Gyroscope
Estimated Estimated
Attitude Gyroscope Bias
Figure 8: Flow diagram of the attitude determination system. Several models and sensors are used as an input for the
attitude determination techniques EKF and SVD.
where ω̃ is the measured angular rate vector, β is the bias in gyroscope measurements, and ηv and ηu are independent
zero-mean Gaussian white-noise processes with spectral densities σ2v and σ2u , respectively. The propagation step in
the filtering process predicts the next state of the system via kinematics model as function of the filtered gyroscope
measurements computing:
ω̂k|k−1 = ω̃k−1 − β̂k−1 (3)
∆t
!
q̂k|k−1 = I4×4 + Ω(ω̂k|k−1 ) q̂k−1|k−1 (4)
2
Pk|k−1 = Φk Pk−1|k−1 ΦTk + ΓQk ΓT (5)
where ω̂k|k−1 ∈ R , q̂k|k−1 ∈ R and Pk|k−1 ∈ R refer to the propagated angular rate, the attitude quaternion and the
3 4 6×6
state error covariance matrix, respectively, at time step k. Matrix Ω(ω) ∈ R4×4 in (4) is defined as
" #
0 −ωT
Ω(ω) ≡ (6)
ω [ω×]T
with [·×] as the skew-symmetric operator and matrices Φk ∈ R6×6 and Γk ∈ R6×6 in (5) are defined as
Φ11 Φ12
" #
Φk ≡ (7)
03×3 I3×3
∆t2
Φ11 = I3×3 − ∆t[ω̂k ×] + [ω̂k ×]2
2
∆t ∆t3
Φ12 = −∆tI3×3 + [ω̂k ×] − [ω̂k ×]2
2 6
" #
−I3×3 03×3
Γk ≡ (8)
03×3 I3×3
6
MOVE-II ADCS
The second step consists of the filter update step on the basis of the measurement model. Then, let the observed
measurement vector zk be given by
" #
b̃k
zk = (10)
s̃k
where b̃k ∈ R3 and s̃k ∈ R3 are vector measurements provided by the magnetometers and sun sensors, respectively, at
time step k. And let the estimated measurement vector hk be given by
A q̂k|k−1 bi
hk = (11)
A q̂k|k−1 si
where bi ∈ R3 and si ∈ R3 are measurement vectors provided by the IGRF 12 model and the sun position model,
respectively, rotated from the inertial into the body frame by the estimated attitude matrix A q̂k|k−1 ∈ R3×3 at time step
k. Also, we define the measurement sensitivity matrix Hk ∈ R6×6 as
" #
[ A( q̂k|k−1 )bi ×] 03×3
Hk ≡ (12)
[ A( q̂k|k−1 )si ×] 03×3
yielding the residual vector
rk = zk − hk (13)
and the innovation process
δϑk
" #
δx = = K k rk (14)
δβk
The error state in (14) is composed by the attitude error described by small-angle approximation24 δϑk ∈ R3 and the
bias estimate error δβk ∈ R3 . The Kalman gain K k is obtained computing
−1
K k = Pk|k−1 HTk Hk Pk|k−1 HTk + Rk (15)
where Rk is the measurement covariance matrix
σ2m I3×3
" #
03×3
Rk = (16)
03×3 σ2ss I3×3
and σ2m and σ2ss are spectral densities of the magnetometer and the sun sensor, respectively. The MEKF represents
the updated attitude quaternion q̂k|k as the product of an estimated attitude quaternion q̂k|k−1 and a deviation from that
estimate given by26, 27
" #
1 1
δqk = p (17)
1 − kδϑk k2 /4 δϑk /2
The multiplicative update is computed as
= δqk ⊗ q̂k|k−1
q̂k|k (18)
δq0
" #
−δ%
δq⊗ ≡
δ% q0 I3×3 − [δ%×]
where δ% = (δq1 , δq2 , δq3 )T . The updated bias is thus obtained:
β̂k|k = β̂k|k−1 + δβk (19)
For the covariance update equation, we consider the Joseph form equation as it is shown to be more stable and robust.28
Eq. (20) guarantees that the covariance matrix is always symmetric positive definite, Pk|k > 0, as long as the a priori
Pk|k−1 is symmetric positive definite as well.
Pk|k = (I6×6 − K k Hk ) Pk|k−1 (I6×6 − K k Hk )T + K k Rk K Tk (20)
7
MOVE-II ADCS
3.3 Calibration
The magnetic field sensors are calibrated by different calibration methods. All of them need a large set of sample
data for full calibration. This set is acquired by rotating the satellite into different attitudes. The sample values should
ideally be on an origin-centered sphere when plotted in 3D space. Linear and constant offsets as well as alignment
cause a better approximation with an oblique ellipsoidal. We can fit the ellipsoidal on our sample data with least square
methods, because our noise is Gaussian distributed. The Gaussian distribution was proven with the Shapiro-Wilk
test. We calculate the obliquity of the ellipsoid by solving Wahba’s Problem.19 This is done with the Singular Value
Decomposition method.18 The microcontrollers apply the calibration on the raw magnetic field vector braw according
to formula (21). The calibrated vector is bc .
bc = R(Lbraw − c) (21)
R ∈ R3×3 is the rotation matrix between the magnetic field sensor frames. In our calibration model it represents
the obliquity of the ellipsoid. c ∈ R3 is the offset vector of the ellipsoid from the center of the coordinate system. It
corresponds to the offset of the magnetometer on every axis. L ∈ R3×3 is a diagonal matrix with the ratio between
the main axes of the ellipsoid. It resembles the linear error of every magnetometer axis. For the offset we also use
continuous and robust algorithms like Acuña’s Algorithm,29 which directly tries to maximize the log-likelihood of the
sensor model while neglecting the change of the outer magnetic field.
The sun sensors are calibrated with the use of a turn table and a strong light source. One sensor is chosen as the
reference sensor. We can then determine the alignment between the sensors by rotating it on all axes and measure the
zero-crossing of the angles in the sun sensor frame. We can either apply the calibration directly on the voltage levels
of the sun sensor output or on the calculated angles.
The calibration techniques are applied on ground. Sensor data can be retrieved from the satellite in space to
determine the calibration parameters.
Two different control modes using only magnetic actuation are utilized for the MOVE-II mission: Detumbling and sun
pointing mode. Therefore, two different control laws based on magnetic control are presented.
The detumbling controller must be able to reduce the initial angular velocities of CubeSat after ejection from its
deployer. The B-dot control is a simple control law for despinning spacecrafts, which has been implemented on several
CubeSat missions.14, 15, 30 This detumbling algorithm utilizes only magnetometers and magnetorquers and can despin
the satellite relative to the Earth’s magnetic field, since it is based on the rate of change of body-fixed magnetometer
signals. The rate of change in the measured magnetic field is mainly caused by the rotation of the satellite in the Earth’s
magnetic field in Low Earth Orbit. Due to its established implementation in space this control law is the primary choice
for the detumbling controller. The control law is given by
mctr = −c ḃ (22)
where c ∈ R is a positive constant, ḃ ∈ R3 the time derivative of the geomagnetic field and mctr ∈ R3 the resulting
control dipole moment. The resulting control torque is
Since it is not suitable to differentiate a noisy magnetometer signal, a filter is implemented to compute the required time
derivative. This filter is realized by a linear fit routine of the GNU Scientific Library.31 To get a good approximation
for the actual rate of change more than two magnetometer data points are considered. Therefore, a buffer module is
implemented that saves a specific number of the latest measured magnetometer values.
8
MOVE-II ADCS
detumbling control, shown in Figure 9. A prototype of the satellite is suspended using a 2 m long nylon string in the
center of the Helmholtz cage, so that it has one rotational degree of freedom. This setup is not ideal since the twist in
the string induces a torque on the suspended satellite. This torque increases with the number of twists. The magnetic
field strength is set to eight times the Earth’s magnetic field. A high B-dot gain of 10000 is used. The magnetic field
vector in the Helmholtz cage is rotated with a constant rotational velocity of 11 deg /s. The B-dot algorithm tries to
dampen this rate of change of the magnetic field.
Figure 9 shows the results of this test. 1) Starting from a stationary satellite, the rotating field has the effect
of spinning up the satellite in the same direction as the magnetic field vector. Ideally, the satellite would rotate syn-
chronously with the cage field vector, however the aforementioned torque exerted by the string causes it to spin slower.
2) The direction of rotation of the cage field vector is reversed. At this point B-dot algorithm causes the satellite to
reverse its direction of rotation. The torque from the twisted string also adds to the rotational speed. 3) The combined
effect of the B-dot algorithm and the string causes the satellite to spin faster than the rotating cage field vector. In
the region from 3 to 4, compensation of the difference in rotational speed by the B-dot algorithm causes the satellite’s
rotational speed to oscillate. 4) The direction of rotation of the cage field vector is reversed again. 5) Magnetic field
vector rotation in the Helmholtz cage is stopped. This causes the satellite’s angular velocity to converge to a stationary
state.
12
Angular Velocity (deg/s)
8
3 4
4
-4
1 2 5
-8
-12
Figure 9: Angular velocity of the Mainpanel z-axis gyroscope. The magnetic field rotates with a angular velocity of
11 deg /s which is marked with the dotted line. 1) Magnetic field of the Helmholtz coil starts rotating. 2) Magnetic field
rotation reversed. 3) Overshoot due to string torque. 4) Magnetic field rotation reversed again. 5) Rotation stopped
with following convergence towards a stationary state.
For sun pointing control different approaches can be considered. We designed a linear model-based controller for the
sun pointing task. Therefore, a controller that utilizes full attitude for the state feedback directly is not necessarily
required, since the sun vector can be explicitely used. The terminology reduced attitude control shall indicate that
the direction of the pointing axis and the rotation around this axis is controlled. The attitude around this axis is not
specified.
In this paper only the reduced attitude control approach is presented, since it is the preferred technique for sun
pointing after development investigations. Two different approaches can be distinguished: Spin Stabilized Sun Pointing
Control (SSPC) of the satellite around the pointing axis and a non-spinning Reduced Sun Pointing Control (RSPC). In
the latter case the satellite points to the sun, but there is no rotation around this pointing axis. To find a stable controller
gain, the control design procedure presented in Wisniewski32 used: The linear quadratic regulator (LQR) formulations
exploiting the time-periodicity are well studied and Floquet theory can be utilized for stability analysis providing a
powerful tool for the control design. Due to constraints in computation capacity and power supply of the ADCS a
constant gain state feedback controller is chosen.
9
MOVE-II ADCS
where δx = (s1 , s2 , ω1 , ω2 , ω3 − ωS )T ∈ R5 is the state vector. It consists of the components of the angular velocity ω
of the satellite relative to the inertial frame (considering the spin rate ωS , 0 for SSPC in the last component) and the
two first components of the sun vector. A ∈ R5×5 is the system matrix , B ∈ R5×3 is the control input matrix and u ∈ R3
the control input vector. The control input matrix is time-periodic
with T as the system period. This is reasonable, because B contains information of the magnetic field which changes
approximately periodically during half an orbit. In accordance with the work of Wisnievski32 the time-periodic control
input matrix has to be averaged to calculate a constant controller gain:
Z T
1
B̄ = B(t)dt (26)
T 0
The averaged control input matrix is inserted into the steady-state Ricatti equation. After finding the solution, the
general state-feedback control law is given by
u = −Kδx (27)
where K ∈ R3×5 is the constant controller gain matrix. A mapping function is used to ensure that the dipole moment is
always perpendicular to the magnetic field:32
u×b
u −→ m : m= (28)
kbk
where u ∈ R3 is the new and unconstrained control input vector which can be chosen arbitrarily by the controller. Due
to the mapping onto the plane perpendicular to the geomagnetic field power consumption required for actuation can be
saved.32
The advantage of this proposed control design is finding stable controller gain very easily. No further require-
ments and restrictions of the attitude around the pointing axis are required. This results in a simpler control problem.
Moreover, the proposed controller has the flexibility that state feedback can be obtained by two different methods:
The required state vector can be either estimated by the EKF, e.g. for the required sun vector
ŝ = A( q̂)si (29)
or measurements can be used directly for course sun pointing. In the latter case special attention has to be paid on the
sun vector measurements, which are not available during eclipse and can be corrupted by albedo of the Earth.
5. Software Implementation
The ADCS software is split into two components. The ADCS subsystem daemon runs continuously on the CDH sub-
system and controls the Mainpanel via SPI. The ADCS daemon provides an interface exposing the ADCS subsystem
functionalities to other programs on the CDH in the form of D-Bus methods. The ADCS firmware runs on the mi-
crocontrollers of the Mainpanel, the Sidepanel and the Toppanel. The firmware exists in two versions, one for the
Mainpanel and one for the Sidepanels and the Toppanel.
Both components are written in C++. C++ supports object orientated programming and abstract interfaces while
still retaining low level C compatibility. Abstract interfaces reduce tight coupling between software modules. These
modules are viewed as blackboxes from the outside.
In our software the modules can be of one of three types. Producers are modules gathering data from the outside
world. Sensors fall into this category. Consumers are the endpoints for data, where it is used to drive the actuators in
our system. The coil driver is an example for this category. Transformers are functions that get data from producers,
transform it and pass the transformed data to consumers or other transformers. Additionally, a stateful transformer is
allowed to keep its state between calls. For example the buffer for the magnetic field data stores previous measurements
to perform a linear fit.
10
MOVE-II ADCS
The ADCS modes correspond to the different long term responsibilities of ADCS. When the data handling system
of the satellite starts, ADCS is switched on in sleep mode. This mode is designed to reduce power draw while still
providing a subset of sensor data to other subsystems. During Launch and Early Operation Phase (LEOP) ADCS goes
into detumbling mode to execute the B-dot algorithm. After the satellite’s angular speed falls below a pre-defined
threshold, sun pointing mode is entered. Sun-pointing orients the Toppanel and the 4 deployed solar wings to the sun
for power generation and measurement of the experimental payload cells. On the ground an additional test mode is
available allowing to test and verify the system.
In addition to these modes, ADCS provides short term functionalities to other subsystems. Thermal data is
provided to the Thermal subsystem and a sun vector is provided to the Payload subsystem. Housekeeping data is
recorded regularly and transmitted to the ground station.
The ADCS uses input from other subsystems. TLE data support attitude determination, calibration parameters
for sensors, parameters of the EKF and the controller gains can be updated.
The ADCS daemon uses the main SPI bus of the satellite to send control data to the Mainpanel microcontroller and
receive status and sensor data in return. To ensure the correctness of the transferred data all SPI transfers include a
CRC16 checksum which is verified on the receiving side.
A direct memory access (DMA) controller allows to receive the control data asynchronously, ensuring uninter-
rupted execution of the algorithms running on the Mainpanel. In the next iteration of the Mainpanel processing loop
the received control data is processed and the sensor and status data structure is updated. Generation counters keep
track of updates to each component of the data structure. For example, when the D-Bus method to set the ADCS mode
is called the daemon receives the name of the mode as a string, sets the corresponding byte in the control data structure
and updates the generation counter. This data structure is then sent to the Mainpanel. When the Mainpanel detects an
updated generation counter it switches to the mode set by the daemon.
Two additional SPI busses are used to transfer data from the Mainpanel to the Sidepanels (and the Toppanel).
Similar to the daemon-Mainpanel interface the Mainpanel sends a control data structure and receives a sensor data
structure.
Since each panel features an independent microcontroller, we use a distributed approach for sensor data gathering and
pre-processing. The measurements from the magnetometer, gyroscope and sun sensors are independently acquired
on each panel. Then the resulting vectors get rotated to the central coordinate frame and corrected using adjustable
calibration values. Afterwards the data from all panels is aggregated on the Mainpanel and the sun vector from the
sensor with the highest light intensity is selected.
Attitude determination and control algorithms are processed centrally on the Mainpanel. The sensor data is
used to calculate the attitude as described in section 3.1. Using the control algorithms described in section 4, the
required magnetic control moment is calculated. As the magnetorquers influence the magnetic field measurements, time
scheduling of measurement and actuation is required. While coil actuation is in progress no measurements are made
and vice versa. With this approach the Sidepanel microcontrollers only act as transformers, reading and preprocessing
sensor values. Additionally they control the coils on demand while sleeping the remaining time. This simplifies the
design and lowers the power consumption.
In order to actuate the coils to the required control moment, the required coil current Ictrl for each axis is calculated
using
mctrl
Ictrl = (30)
NA
where mctrl is the corresponding magnetic dipole moment value, N is the number of turns of the coil and A is the coil
area. The Mainpanel then sends the Ictrl value to the Sidepanels. Each panel then drives its coil and uses a timed
interrupt to turn it off after the desired actuation duration. A timer counter module on the microcontroller generates
the 512 kHz PWM signal required to operate the coil driver circuit. The resulting current is measured and used as a
feedback signal by a proportional-integral-derivative controller that controls the pulse width of the PWM signal. The
11
MOVE-II ADCS
self-adjusting nature of this controller makes it independent of the coil design as well as variations in coil resistance. It
is thus able to work robustly over a wide range of temperatures.
Naturally occurring space radiation produces transient and permanent changes in the electrical properties of solid-state
devices and integrated circuits. This can corrupt the flash memory storing the firmware and thereby cause the system to
fail. As the used Atmel microcontrollers are not radiation resistant, methods to mitigate radiation-induced degradation
are required.33 This motivated the development of a software system allowing the Mainpanel and the Sidepanel flash
memory to be reprogrammed with a pristine firmware image. As an additional benefit this allows uploading new
firmware with improved functionality from the ground station to the satellite in orbit. The software update of the
Mainpanel microprocessor is done by flashing via CDH, the microcontrollers of the Sidepanels are flashed via the
Mainpanel. Both use the PDI, an Atmel proprietary interface for external programming.10 The update system includes
a program running on the CDH to flash the Mainpanel and a software module included in the Mainpanel firmware to
flash the Sidepanels.
In the Linux environment on the CDH the scheduler causes the flashing program to be suspended in order to
provide computing time to other processes. This interrupts the flashing process. By saving the last written address
the flashing process can be resumed and the program continues writing at the saved address. The Sidepanel flashing
procedure does not suffer interruptions, because the Mainpanel microcontroller is a single threaded system.
Flashing Procedure
Mainpanel updates via CDH To update the Mainpanel software, the new binary has to be uploaded to the satellite
through the mission operations frontend. Then the flashing program is executed on the CDH using the ADCS
daemon. The flashing software for the Mainpanel also provides the ability to erase or dump the Mainpanel flash
memory to verify its integrity.
Sidepanel updates via Mainpanel The Sidepanel firmware is part of the Mainpanel firmware. When the Mainpanel
receives a command to flash it writes the stored firmware to the Sidepanels. To update the Sidepanel firmware
the Mainpanel has to be updated first. The new firmware contained in the Mainpanel software can then be flashed
to a specific Sidepanel or several Sidepanels at once.
This paper presents the current state of the ADCS developed for the MOVE-II CubeSat mission. The hardware was
developed using an iterative prototyping process and was tested over the different project phases. The performance of
actuators and sensors was characterized in different test procedures and shows promising results. During qualification
tests of the MOVE-II engineering model, the ADCS hardware passed all environmental and functional requirements.
Different parts of the system such as interaction with the CDH of MOVE-II have been verified successfully. In this
paper also results of a detumbling test are presented.
At the time of publication we are testing the attitude estimation and sun pointing algorithm. As not all parameters
of a space environment can be easily simulated, a Hardware in the Loop (HIL) test setup is being developed to verify
the complete functionality of the ADCS. In this setup the ADCS hardware and software will communicate with a
simulation environment developed in Matlab/Simulink to test the full interaction of control and estimation.
Based on a distributed hardware concept a partially distributed system was implemented using several low-power
microcontrollers. A software update system allows to refine and extend the software to investigate on new attitude
determination and control strategies. The possibility to suspend individual parts allows significant power savings while
still providing the full computing capacity of six microcontrollers when needed. The described system is a good
platform for future research on distributed computation on CubeSats.
7. Acknowledgments
We would like to express our thanks to all people who have supported our work in any way. We would like to thank all
former members of the ADCS team for their important contribution. Furthermore, we would like to express our thanks
to Prof. Huang He for taking his time for weekly research meetings and giving us advice for the ADCS development.
Last but not least, our appreciation also belongs to Prof. Ulrich Walter for providing such a fruitful and open-minded
12
MOVE-II ADCS
environment in which this development came into being. Finally, we would like to express our gratitude to the ESTCube
team for giving us advice.
The authors also acknowledge the funding of MOVE-II by the Federal Ministry of Economics and Energy, following a
decision of the German Bundestag, via the German Aerospace Center (DLR) with funding grant number 50 RM 1509.
13
MOVE-II ADCS
References
[1] H. Heidt, J. Puig-Suari, A. Moore, S. Nakasuka, and R. Twiggs. Cubesat: A new generation of picosatellite for
education and industry low-cost space experimentation. 2000.
[2] M. Dziura, M. Langer, M. Losekamm, M. Grulich, and M. Mutschler. Providing hands-on space education by
involvement of collaborating self-reliant student teams.
[3] M. Langer, N. Appel, M. Dziura, C. Fuchs, P. Günzel, J. Gutsmiedl, M. Losekamm, D. Meßmann, T. Pöschl,
and C. Trinitis. MOVE-II–der zweite kleinsatellit der technischen universität münchen. Deutscher Luft-und
Raumfahrtkongress (DLRK) Rostock, Germany, 2015.
[4] M. Czech, A. Fleischner, and U. Walter. A first-move in satellite development at the tu-münchen. In Small
Satellite Missions for Earth Observation, pages 235–245. Springer, 2010.
[5] M. Langer, C. Olthoff, J. Harder, C. Fuchs, M. Dziura, A. Hoehn, and U. Walter. Results and lessons learned
from the cubesat mission first-move. Small Satellite Missions for Earth Observation, Springer, Berlin, 2015.
[7] M. Rossner, N. Benes, T. Grübler, S. Plamauer, and A. W. Koch. Demonstration of a Rocket-Borne Fiber-Optic
Measurement System: The FOVS Experiment of REXUS 15. In 22nd ESA Symposium on European Rocket and
Balloon Programmes and Related Research, volume 730, page 415, 2015.
[11] J. L. Crassidis and J. L. Junkins. Optimal estimation of dynamic systems, volume 24 of Chapman & Hall/CRC
applied mathematics & nonlinear science. CRC Press, Boca Raton, F., 2. ed. edition, 2012.
[13] J. Hofman and R. Sharp. A total ionising dose, in-situ test campaign of DS18B20 temperature sensors. In
Radiation and Its Effects on Components and Systems (RADECS), 2011 12th European Conference on, pages
871–876. IEEE, 2011.
[14] K. Jensen and K. Vinter. Attitude Determination and Control System for AAUSAT3. Master thesis, Aalborg
University, 2010.
[15] P. Bangert, S. Busch, and K. Schilling. Performance characteristics of the uwe-3 miniature attitude determination
and control system. In Proceedings 2nd IAA Conference on Dynamics and Control of Space Systems, Roma,
2014.
[16] A. Slavinskis, H. Ehrpais, H. Kuuste, I. Sünter, J. Viru, J. Kütt, E. Kulu, and M. Noorma. Flight results of
estcube-1 attitude determination system. Journal of Aerospace Engineering, 29(1):04015014, 2015.
[17] P. Horowitz and W. Hill. The Art of Electronics. Cambridge University Press, 2015.
[18] K. Vinther, J. K. Fuglsang, J. A. Larsen, and R. Wisniewski. Inexpensive cubesat attitude estimation using
quaternions and unscented kalman filtering. Automatic Control in Aerospace, 4(1), 2011.
[19] Grace Wahba. Problem 65-1: A least squares estimate of satellite attitude. SIAM Review, 7(3):409–409, 1965.
[20] S. Dunlop, O. Montenbruck, R.M. West, and T. Pfleger. Astronomy on the Personal Computer. Springer Berlin
Heidelberg, 2013.
14
MOVE-II ADCS
[22] F. R. Hoots and R. L. Roehrich. Models for propagation of norad element sets. Technical report, DTIC Document,
1980.
[23] S. Busch, P. Bangert, S. Dombrovski, and K. Schilling. UWE-3, in-orbit performance and lessons learned of a
modular and flexible satellite bus for future pico-satellite formations. Acta Astronautica, 117:73–89, 2015.
[24] J. L. Crassidis and J. L. Junkins. Optimal Estimation of Dynamic Systems. CRC Press, Taylor & Francis Group,
2012.
[25] F. L. Markley and J. L. Crassidis. Fundamentals of Spacecraft Attitude Determination and Control. Springer,
2014.
[26] J. L. Crassidis, F. L. Markley, and Y. Cheng. Survey of nonlinear attitude estimation methods. Journal of
Guidance, Control, and Dynamics, 30(1):12–28, 2007.
[27] H. L. Fisher, M. D. Shuster, and T. E. Strikwerda. Attitude determination for the star tracker mission. In AAS/AIAA
Astrodynamics Specialist Conference, Stowe, Vermont, 1989.
[28] P. Maybeck. Stochastic Models, Estimation, and Control - Vol. 1. Academic Press, 1979.
[29] R. Alonso and M. D. Shuster. Attitude-independent magnetometer-bias determination: a survey, 2002.
[30] T. Flatley, W. Morgenstern, A. Reth, and F. Bauer. A b-dot acquisition controller for the radarsat spacecraft. In
NASA Conference Publication, pages 79–90. NASA, 1997.
[31] Gnu scientific library: Least squares fitting. https://www.gnu.org/software/gsl/manual/html_node/
Least_002dSquares-Fitting.html. Accessed: 2017-05-27.
[32] Wisniewski, R. Satellite Attitude Control Using Electromagnetic Actuation. Ph.d. thesis, Aalborg University,
1996.
[33] J. R. Srour and J. M. McGarrity. Radiation effects on microelectronics in space. Proceedings of the IEEE,
76(11):1443–1469, 1988.
15