The only forces that take place in the monospinner's flight are the force of gravity acting through the center of mass, and the force of the propeller acting at the end of one of the arms. Normally, this would act as a torque and flip the entire drone over, but the motor itself provides a torque on the system, causing the drone to spin in a constant circle. This means that the torque caused by the thrust vector averages out over the course of the spin, and the average thrust is purely in the global Z axis.
We used two reference frames: the global inertial reference frame (indicated by E in the diagram below) and the body reference frame (indicated by B).
Because our drone is constantly rotating, and rotation in three axes is critical to its movement, we had to find a way to represent the angle of our drone in three dimensions. We decided to use Euler angles, which provide a way to describe a body's orientation in three dimensions. We divided the drone's orientation into three sequential rotations about the X axis by phi (𝜙 ), the Y axis by theta (𝛳 ), the Z axis by psi (𝜓 ). We then created a rotation matrix for each angle, and multiplied these three rotation matrices together. This yielded our final rotation matrix, which we use to rotate the drone frame into the world frame.
Because we have torques in our governing equations, to calculate angular acceleration and angular velocity we need the moment of inertia of our body. The moment of inertia is described with a tensor that expresses the object's resistance to rotation. The tensor in our case is a 3x3 matrix, where the diagonal entries are the object's resistance to rotation about one of three axes (choosing the correct axis are important) and the off-diagonal terms are the cross-linked terms. These terms are a little bit difficult to understand at first, but essentially they describe how a torque around one axis will actually cause the object to rotate about a different axis. This is based on the distribution of the object's mass.