Lab-Sticc, ENSTA-Bretagne
Inertial control of a spinning flat disk
Abstract. This paper proposes a Lyapunov based approach to control the rotation of a flat disk spinning in the space without external forces. The motion of the disk is governed by the Eulerโs rotation equation for spinning objects. The control is made through the inertia matrix of the disk.
1 Spinning disk
Consider a disk spinning in the space without any gravity. The disk is assumed to be flat, i.e., its inertia matrix [9]
(1) |
should satisfy
-
โข
the positivity condition: ;
-
โข
the flatness condition: .
We assume that we can control the inertia matrix via some internal forces in a strap down manner. It means that we have no inertial wheels. Instead, we could slightly modify by dilatation or compression of some parts of the disk. We also consider that we are not able to change the center of gravity of the disk.
At rest, the inertial matrix is assumed to be
(2) |
where is the radius of the disk and is its mass. The entries of the inertia matrix can change as soon as the positivity and the flatness conditions are satisfied. Equivalently, and for a better visualization, we may assume that, we have two symmetric pairs of masses which can move along the and axis (see Figure 1).

The inertia of the disk is now
(3) |
where corresponds to the distance of the -masses (green) to the center and is the distance of the -masses (black) to the center. Our objective is to propose a controller to modify the rotation of the disk. The control objective is not so clear at the moment since rotation cannot be controlled arbitrarily. Indeed, the angular momentum remains constant and is thus non controllable.
2 State equation of the flat disk
The state equations are obtained from the conservation of angular momentum. If defines the orientation matrix of a rigid body (for us the flat disk), then the angular momentum is
(4) |
where is the rotation vector of the body expressed in its own frame.
Since it is constant, we have
(5) |
We get the Eulerโs rotation equation
(6) |
If we include the orientation, we have the motion equation
(7) |
which will be used for the simulation. For the control we do not want to control the orientation ; we only want to control . In what follows, the component of will be denoted by , i.e., we will write
(8) |
Since is diagonal, the time-varying Euler equation rewrites into
(9) |
From (3), we have
(10) |
where we assumed that the sum of the control masses along the axis are equal to . The same assumption is taken for the masses along the axis. We have
(11) |
The state equations of the system are thus
(12) |
A first simplification of the control problem can be obtained by adding the following controller
(13) |
where are some intermediate input (see Figure 2), we get the state equations for the flat disk:
(14) |

The state vector is and the input vector is .
3 Controller
This section proposes different controllers to change the spinning behavior of the flat disk. The principle is to combine Lyapunov control theory in the context of rotating object [6].
3.1 Principle
To find a controller for our system (14), we follow a Lyapunov control approach [8], [5]. For this, we choose a positive function , namely the objective function, such that when the objective is reached.
Let us rewrite the state equation into an affine form [4]:
(15) |
The time derivative of is
(16) |
where is the Lie derivative operator. Since the solution of
(17) |
where , is
(18) |
we conclude that a Lyapunov like controller to reach our objective is
(19) |
3.2 Alignment controller
Assume that we want the disk spins around one principal axis of the body. For instance its first axis, i.e., the -axis. We define the objective function
(20) |
The quantity corresponds to the alignment error. Note that when , we have (the alignment is performed) and (the inertia matrix is at its nominal position). The time derivative of is
(21) |
The same result would have easily been obtained using a symbolic calculus module such as Sympy which is an open source computer algebra system written in Python. The corresponding Sympy script is the following
from sympy import* from sympy.diffgeom import* C=CoordSystem(โCโ,Patch(โPโ,Manifold(โMโ,5)),{[w1,w2,w3,I2,I3]}) w1,w2,w3,I2,I3 = C.coord\_functions() E = C.base\_vectors() F=-((I3-I2)/(I2+I3))*w2*w3*E[0]+-w3*w1*E[1]+w1*w2*E[2] G1=-(w1/(I2+I3))*E[0]-(w2/I2)*E[1]+E[3] G2=-(w1/(I2+I3))*E[0]-(w3/I3)*E[2]+E[4] V = 1/2*w2**2 + 1/2*w3**2 + 1/2*(I2-I20)**2 + 1/2*(I3-I30)**2 LfV=LieDerivative(F,V) Lg1V=LieDerivative(G1,V) Lg2V=LieDerivative(G2,V)
Stability analysis. With our controller, we have if
(22) |
We conclude that it it possible to converge to values that do not correspond to the desired alignment. Equivalently, we may have or .
Figure 3 illustrates the behavior of the controller. The initial rotation vector is The first subfigure (top-left) shows the kinetic energy of the disk (blue) and the objective function (red) with respect to for . The second subfigure (top right) shows the evolution of the components of in the frame box The third subfigure represents the evolution of the vector The frame box is . The last subfigure represents the component of the inertia matrix in the frame box . Since the controller is not able to cancel , we consider that the alignment objective is only partially reach.
The strategy followed by the controller is first to increase to make the second axis the intermediate axis (see the th Subfigure). As a consequence, due to instability of the second axis, also known as the Dzhanibekov effect (even if first shown by Poinsot [7]), the component of is able to decrease without precession (see the th Subfigure). Then in a second step, the control changes its strategy to generate an oscillation between and . This yields a convergence of , the rotation along the first axis. We also observe that and do not converge to a static value.

3.3 Passive controller
We now want the disk losses energy with the intuition that it may limit the precession. Another motivation is that it may help to find an objective function which could help to guaranty the stability. A passivity control approach can be used for this purpose [3][1]. We define the mechanical energy as
(23) |
The quantity corresponds to kinetic energy and is the artificial potential energy.
We have
The same result is obtained using Sympy taking
V = 1/2*(I2+I3)*w1**2+ 1/2*I2*w2**2 + 1/2*I3*w3**2 + 1/2*(I2-I20)**2 + 1/2*(I3-I30)**2
Figure 4 illustrates the behavior of the controller for . The initial rotation vector is The meaning of the plots are those given for Figure 3. The frame for the subfigures are , and , respectively. We observe that the passivity approach for the flat disk is not sufficient to cancel the precession.

3.4 Precession controller
To cancel the precession, we define the objective function
(24) |
The quantity
(25) |
can be interpreted precession energy, i.e., a part of the kinetic energy that creates the precession and that can be recovered. Indeed, when , we see from the Euler equation that when which means that we have no more precession.
Using Sympy with
V = 1/2*((I3-I2)*w2*w3)**2 + 1/2*((I2)*w1*w3)**2 + 1/2*((-I3)*w1*w2)**2 + 1/2*(I2-I20)**2 + 1/2*(I3-I30)**2
we get
Figure 5 illustrates the behavior of the controller for . Again, the initial rotation vector is The meaning of the plots are those given for Figure 3. The frame for the subfigures are , and respectively. We observe that the controller easily cancel the precession of the flat disk.

3.5 Combination
As for Subsection 3.2, assume that at time , we spin around the second axis:
and that we want to spin around the second axis. Then, it seems natural to apply the alignment controller for a while and then to switch to the precession controller to make converge to the nearest principal axis.
Figure 6 illustrates the behavior of the controller. For , we apply the alignment control and for , we apply the precession control. The objective can be considered has reached since we were able to go from to without any external force. This discontinuity observed for on the first subfigure is due to the change of objective function at time The frame for the subfigures are , and , respectively.
A video illustrating the disk spinning and changing its rotation thanks to the moving masses in the flat disk is given at:

4 Conclusion
This paper has proposed several Lyapunov-like methods to control the rotation of a spinning disk without any external forces. Only a partial control of the rotation can be done since the angular momentum remains constant. We made the assumption that the disk is flat which yields a difficulty since masses are not allowed to move along the axis of the disk. Even with this loss of controllability, we have shown that some partial control was still feasible.
The first controller tries to cancel two components of the spin vector to facilitate the alignment of the desired principal axis with the angular momentum. Simulations show that the alignment is not perfectly reached since some precession still exist. The second controller forces the mechanical energy to decrease. The motivation of using a passive control approach was to facilitate the proof of stability. Now, due to the flatness assumption of the disk, the stability was not obtained and we were not able to cancel the precession using an energy based controller. The third controller focuses on the precession and is shown to perfectly cancel it. This means that the spin vector will perfectly be aligned with one of the principal axis of the body. Finally, we have shown that the combination of the alignment controller with the precession controller allows us to change the rotation axis from one principal axis to another in an efficient way. Now, this combination requires two objective functions whereas one should probably be sufficient. A perspective of this work is to find a unique objective function which would allow the controller to switch from one principal axes to another. This objective function would probably give us a better understanding of the motion of a flat disk.
A possible application of the tools presented in this paper could be for instance, the precession control of a flat rolling wheel [2]. On the one hand, maintaining a precession can be helpful to change rapidly the heading of the wheel. On the other hand, reducing the precession increases the stability of the rolling wheel.
The Python code associated to all examples can be found at
References
- [1] B.ย Brogliato, R.ย Lozano, B.ย Maschke, and O.ย Egeland. Dissipative systems analysis and control, Springer-Verlag, London. Springer-Verlag, 2005.
- [2] D.ย Esnault. Robot dโengagement gyrostabilisรฉ de reconnaissance. Rapport de PFE, ENSTA-Bretagne, Brest, France, 2023.
- [3] I.ย Fantoni and R.ย Lozano. Non-linear control for underactuated mechanical systems. Springer-Verlag, 2001.
- [4] A.ย Isidori. Nonlinear Control Systems: An Introduction, 3rd Ed. Springer-Verlag, New-York, 1995.
- [5] H.K. Khalil. Nonlinear Systems, Third Edition. Prentice Hall, 2002.
- [6] R.ย Leine, G.ย Capobianco, P.ย Bartelt, M.ย Christen, and A.ย Caviezel. Stability of rigid body motion through an extended intermediate axis theorem: application to rockfall simulation. Multibody System Dynamics, 52, 08 2021.
- [7] M.ย Poinsot. Thรฉorie nouvelle de la rotation des corps. Bachelier, 1834.
- [8] E.ย Sontag. Mathematical control theory: deterministic finite dimensional systems (2nd ed.). Springer-Verlag, Berlin, 1998.
- [9] D.A. Wells. Lagrangian Mechanics. Schaumโs outlines, London, 1967.