This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

\institution

Lab-Sticc, ENSTA-Bretagne

Inertial control of a spinning flat disk

Luc Jaulin

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]

๐ˆ=(I1000I2000I3)\mathbf{I}=\left(\begin{array}[]{ccc}I_{1}&0&0\\ 0&I_{2}&0\\ 0&0&I_{3}\end{array}\right) (1)

should satisfy

  • โ€ข

    the positivity condition: I1>0,I2>0,I3>0I_{1}>0,I_{2}>0,I_{3}>0;

  • โ€ข

    the flatness condition: I1=I2+I3I_{1}=I_{2}+I_{3}.

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 ๐ˆ\mathbf{I} 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

๐ˆยฏ=(Iยฏ1000Iยฏ2000Iยฏ3)=(12โ€‹mโ€‹r200014โ€‹mโ€‹r200014โ€‹mโ€‹r2)\bar{\mathbf{I}}=\left(\begin{array}[]{ccc}\bar{I}_{1}&0&0\\ 0&\bar{I}_{2}&0\\ 0&0&\bar{I}_{3}\end{array}\right)=\left(\begin{array}[]{ccc}\frac{1}{2}mr^{2}&0&0\\ 0&\frac{1}{4}mr^{2}&0\\ 0&0&\frac{1}{4}mr^{2}\end{array}\right) (2)

where rr is the radius of the disk and mm 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 yy and zz axis (see Figure 1).

Refer to caption
Figure 1: The disk spins and the two pairs of masses (black and green) can slightly move in order the control the motion of the rotation vector ๐Ž\boldsymbol{\omega}

The inertia of the disk is now

๐ˆ=(12โ€‹mโ€‹r2+12โ„“22+12โ€‹โ„“3200014โ€‹mโ€‹r2+12โ„“3200014โ€‹mโ€‹r2+12โ„“22)\mathbf{I}=\left(\begin{array}[]{ccc}\frac{1}{2}mr^{2}+\text{$\frac{1}{2}$$\ell_{2}^{2}+\frac{1}{2}\ell_{3}^{2}$}&0&0\\ 0&\frac{1}{4}mr^{2}+\text{$\text{$\frac{1}{2}$$\ell_{3}^{2}$}$}&0\\ 0&0&\frac{1}{4}mr^{2}+\text{$\frac{1}{2}$$\text{$\ell_{2}^{2}$}$}\end{array}\right) (3)

where โ„“2\ell_{2} corresponds to the distance of the yy-masses (green) to the center and โ„“3\ell_{3} is the distance of the zz-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.

This paper is organized as follows. Section 2 gives the state equations of the spinning disk. Section 3 proposes different controllers to change behavior of the rotation of the disk. Section 4 concludes the paper.

2 State equation of the flat disk

The state equations are obtained from the conservation of angular momentum. If ๐‘\mathbf{R} defines the orientation matrix of a rigid body (for us the flat disk), then the angular momentum is

โ„’=๐‘๐ˆโ€‹๐Žr\mathcal{L}=\mathbf{R}\mathbf{I}\boldsymbol{\omega}_{r} (4)

where ๐Žr\boldsymbol{\omega}_{r} is the rotation vector of the body expressed in its own frame.

Since it is constant, we have

๐‘ห™โ€‹๐ˆโ€‹๐Žr+๐‘โ€‹โ‹…๐ˆโ‹…ห™โ€‹๐Žr+๐‘โ‹…๐ˆโ‹…๐Žห™r=๐ŸŽโ‡”๐‘Tโ€‹๐‘ห™โ€‹๐ˆโ€‹๐Žr+๐ˆห™โ‹…๐Žr+๐ˆโ‹…๐Žห™r=๐ŸŽ\begin{array}[]{cl}&\dot{\mathbf{R}}\mathbf{I}\boldsymbol{\omega}_{r}+\mathbf{R}\dot{\mathbf{\cdot I}\cdot}\boldsymbol{\omega}_{r}+\mathbf{R}\cdot\mathbf{I}\cdot\dot{\boldsymbol{\omega}}_{r}=\mathbf{0}\\ \Leftrightarrow&\mathbf{R}^{\text{T}}\dot{\mathbf{R}}\mathbf{I}\boldsymbol{\omega}_{r}+\dot{\mathbf{I}}\cdot\boldsymbol{\omega}_{r}+\mathbf{I}\cdot\dot{\boldsymbol{\omega}}_{r}=\mathbf{0}\end{array} (5)

We get the Eulerโ€™s rotation equation

๐Žห™r=๐ˆโˆ’1โ‹…(โˆ’๐ˆห™โ‹…๐Žrโˆ’๐Žrโˆง๐ˆโ‹…๐Žr)\dot{\boldsymbol{\omega}}_{r}=\mathbf{I}^{-1}\cdot\left(-\dot{\mathbf{I}}\cdot\boldsymbol{\omega}_{r}-\boldsymbol{\omega}_{r}\wedge\mathbf{I}\cdot\boldsymbol{\omega}_{r}\right) (6)

If we include the orientation, we have the motion equation

{๐‘ห™=๐‘โ‹…(โ€‹๐Žrโˆง)๐Žห™r=๐ˆโˆ’1โ‹…(โˆ’๐ˆห™โ‹…๐Žrโˆ’๐Žrโˆง๐ˆโ‹…๐Žr)\left\{\begin{array}[]{cclcl}\mathbf{\dot{R}}&&=&&\mathbf{R}\cdot\textnormal{(}\boldsymbol{\omega}_{r}\wedge\textnormal{)}\\ \dot{\boldsymbol{\omega}}_{r}&&=&&\mathbf{I}^{-1}\cdot\left(-\dot{\mathbf{I}}\cdot\boldsymbol{\omega}_{r}-\boldsymbol{\omega}_{r}\wedge\mathbf{I}\cdot\boldsymbol{\omega}_{r}\right)\end{array}\right. (7)

which will be used for the simulation. For the control we do not want to control the orientation ๐‘\mathbf{R}; we only want to control ๐Žr\boldsymbol{\omega}_{r}. In what follows, the component of ๐Žr\boldsymbol{\omega}_{r} will be denoted by ฯ‰1,ฯ‰2,ฯ‰3\omega_{1},\omega_{2},\omega_{3}, i.e., we will write

๐Žr=(ฯ‰1,ฯ‰2,ฯ‰3)T.\boldsymbol{\omega}_{r}=(\omega_{1},\omega_{2},\omega_{3})^{\text{T}}. (8)

Since ๐ˆ\mathbf{I} is diagonal, the time-varying Euler equation rewrites into

{I1โ€‹ฯ‰ห™1=โˆ’Iห™1โ€‹ฯ‰1โˆ’(I3โˆ’I2)โ€‹ฯ‰2โ€‹ฯ‰3I2โ€‹ฯ‰ห™2=โˆ’Iห™2โ€‹ฯ‰2โˆ’(I1โˆ’I3)โ€‹ฯ‰3โ€‹ฯ‰1I3โ€‹ฯ‰ห™3=โˆ’Iห™3โ€‹ฯ‰3โˆ’(I2โˆ’I1)โ€‹ฯ‰1โ€‹ฯ‰2\left\{\begin{array}[]{ccc}I_{1}\dot{\omega}_{1}&=&-\dot{I}_{1}\omega_{1}-(I_{3}-I_{2})\omega_{2}\omega_{3}\\ I_{2}\dot{\omega}_{2}&=&-\dot{I}_{2}\omega_{2}-(I_{1}-I_{3})\omega_{3}\omega_{1}\\ I_{3}\dot{\omega}_{3}&=&-\dot{I}_{3}\omega_{3}-(I_{2}-I_{1})\omega_{1}\omega_{2}\end{array}\right. (9)

From (3), we have

I1=12โ€‹mโ€‹r2+12โ€‹โ„“22+12โ€‹โ„“32I2=14โ€‹mโ€‹r2+12โ€‹โ„“22I3=14โ€‹mโ€‹r2+12โ€‹โ„“32\begin{array}[]{ccc}I_{1}&=&\frac{1}{2}mr^{2}+\frac{1}{2}\ell_{2}^{2}+\frac{1}{2}\ell_{3}^{2}\\ I_{2}&=&\frac{1}{4}mr^{2}+\frac{1}{2}\ell_{2}^{2}\\ I_{3}&=&\frac{1}{4}mr^{2}+\frac{1}{2}\ell_{3}^{2}\end{array} (10)

where we assumed that the sum of the control masses along the yyaxis are equal to 11. The same assumption is taken for the masses along the zz axis. We have

Iห™1=โ„“2โ€‹โ„“ห™2+โ„“3โ€‹โ„“ห™3Iห™2=โ„“2โ€‹โ„“ห™2Iห™3=โ„“3โ€‹โ„“ห™3\begin{array}[]{ccc}\dot{I}_{1}&=&\ell_{2}\dot{\ell}_{2}+\ell_{3}\dot{\ell}_{3}\\ \dot{I}_{2}&=&\ell_{2}\dot{\ell}_{2}\\ \dot{I}_{3}&=&\ell_{3}\dot{\ell}_{3}\end{array} (11)

The state equations of the system are thus

{ฯ‰ห™1=โˆ’ฯ‰1I2+I3โ€‹(โ„“2โ€‹โ„“ห™2+โ„“3โ€‹โ„“ห™3)โˆ’I3โˆ’I2I2+I3โ€‹ฯ‰2โ€‹ฯ‰3ฯ‰ห™2=โˆ’ฯ‰2I2โ€‹โ„“2โ€‹โ„“ห™2โˆ’ฯ‰3โ€‹ฯ‰1ฯ‰ห™3=โˆ’ฯ‰3I3โ€‹โ„“3โ€‹โ„“ห™3+ฯ‰1โ€‹ฯ‰2Iห™2=โ„“2โ€‹โ„“ห™2Iห™3=โ„“3โ€‹โ„“ห™3\left\{\begin{array}[]{ccc}\dot{\omega}_{1}&=&-\frac{\omega_{1}}{I_{2}+I_{3}}(\ell_{2}\dot{\ell}_{2}+\ell_{3}\dot{\ell}_{3})-\frac{I_{3}-I_{2}}{I_{2}+I_{3}}\omega_{2}\omega_{3}\\ \dot{\omega}_{2}&=&-\frac{\omega_{2}}{I_{2}}\ell_{2}\dot{\ell}_{2}-\omega_{3}\omega_{1}\\ \dot{\omega}_{3}&=&-\frac{\omega_{3}}{I_{3}}\ell_{3}\dot{\ell}_{3}+\omega_{1}\omega_{2}\\ \dot{I}_{2}&=&\ell_{2}\dot{\ell}_{2}\\ \dot{I}_{3}&=&\ell_{3}\dot{\ell}_{3}\end{array}\right. (12)

A first simplification of the control problem can be obtained by adding the following controller

{โ„“ห™2=u1โ„“2โ„“ห™3=u2โ„“3\left\{\begin{array}[]{ccc}\dot{\ell}_{2}&=&\frac{u_{1}}{\ell_{2}}\\ \dot{\ell}_{3}&=&\frac{u_{2}}{\ell_{3}}\end{array}\right. (13)

where u1,u2u_{1},u_{2} are some intermediate input (see Figure 2), we get the state equations for the flat disk:

{ฯ‰ห™1=โˆ’ฯ‰1I2+I3โ€‹(u1+u2)โˆ’I3โˆ’I2I2+I3โ€‹ฯ‰2โ€‹ฯ‰3ฯ‰ห™2=โˆ’ฯ‰2I2โ€‹u1โˆ’ฯ‰3โ€‹ฯ‰1ฯ‰ห™3=โˆ’ฯ‰3I3โ€‹u2+ฯ‰1โ€‹ฯ‰2Iห™2=u1Iห™3=u2\left\{\begin{array}[]{ccc}\dot{\omega}_{1}&=&-\frac{\omega_{1}}{I_{2}+I_{3}}(u_{1}+u_{2})-\frac{I_{3}-I_{2}}{I_{2}+I_{3}}\omega_{2}\omega_{3}\\ \dot{\omega}_{2}&=&-\frac{\omega_{2}}{I_{2}}u_{1}-\omega_{3}\omega_{1}\\ \dot{\omega}_{3}&=&-\frac{\omega_{3}}{I_{3}}u_{2}+\omega_{1}\omega_{2}\\ \dot{I}_{2}&=&u_{1}\\ \dot{I}_{3}&=&u_{2}\end{array}\right. (14)
Refer to caption
Figure 2: A first controller to simplify the state equations of the spinning disk

The state vector is ๐ฑ=(ฯ‰1,ฯ‰2,ฯ‰3,I2,I3)\mathbf{x}=(\omega_{1},\omega_{2},\omega_{3},I_{2},I_{3}) and the input vector is ๐ฎ=(u1,u2)\mathbf{u}=(u_{1},u_{2}).

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 Vโ€‹(๐ฑ)V(\mathbf{x}), namely the objective function, such that Vโ€‹(๐ฑ)=0V(\mathbf{x})=0 when the objective is reached.

Let us rewrite the state equation into an affine form [4]:

(ฯ‰ห™1ฯ‰ห™2ฯ‰ห™3Iห™2Iห™3)โŸ=๐ฑห™=(โˆ’I3โˆ’I2I2+I3โ€‹ฯ‰2โ€‹ฯ‰3โˆ’ฯ‰3โ€‹ฯ‰1ฯ‰1โ€‹ฯ‰200)โŸ=๐Ÿโ€‹(๐ฑ)+(โˆ’ฯ‰1I2+I3โˆ’ฯ‰2I2010)โŸ=๐ 1โ€‹(๐ฑ)โ‹…u1+(โˆ’ฯ‰1I2+I30โˆ’ฯ‰3I301)โŸ=๐ 2โ€‹(๐ฑ)โ‹…u2.\underset{=\dot{\mathbf{x}}}{\underbrace{\left(\begin{array}[]{c}\dot{\omega}_{1}\\ \dot{\omega}_{2}\\ \dot{\omega}_{3}\\ \dot{I}_{2}\\ \dot{I}_{3}\end{array}\right)}}=\underset{=\mathbf{f}(\mathbf{x})}{\underbrace{\left(\begin{array}[]{c}-\frac{I_{3}-I_{2}}{I_{2}+I_{3}}\omega_{2}\omega_{3}\\ -\omega_{3}\omega_{1}\\ \omega_{1}\omega_{2}\\ 0\\ 0\end{array}\right)}}+\underset{=\mathbf{g}_{1}(\mathbf{x})}{\underbrace{\left(\begin{array}[]{c}-\frac{\omega_{1}}{I_{2}+I_{3}}\\ -\frac{\omega_{2}}{I_{2}}\\ 0\\ 1\\ 0\end{array}\right)}}\cdot u_{1}+\underset{=\mathbf{g}_{2}(\mathbf{x})}{\underbrace{\left(\begin{array}[]{c}-\frac{\omega_{1}}{I_{2}+I_{3}}\\ 0\\ -\frac{\omega_{3}}{I_{3}}\\ 0\\ 1\end{array}\right)}}\cdot u_{2}. (15)

The time derivative of VV is

Vห™โ€‹(๐ฑ,๐ฎ)=โ„’๐Ÿโ€‹Vโ€‹(๐ฑ)+โ„’๐ 1โ€‹Vโ€‹(๐ฑ)โ‹…u1+โ„’๐ 2โ€‹Vโ€‹(๐ฑ)โ‹…u2,\dot{V}(\mathbf{x},\mathbf{u})=\mathcal{L}_{\mathbf{f}}V(\mathbf{x})+\mathcal{L}_{\mathbf{g}_{1}}V(\mathbf{x})\cdot u_{1}+\mathcal{L}_{\mathbf{g}_{2}}V(\mathbf{x})\cdot u_{2}, (16)

where โ„’\mathcal{L} is the Lie derivative operator. Since the solution of

mina1โ€‹u1+a2โ€‹u2s.t.u12+u22=1\begin{array}[]{cc}\min&a_{1}u_{1}+a_{2}u_{2}\\ \text{s.t.}&u_{1}^{2}+u_{2}^{2}=1\end{array} (17)

where a1=โ„’๐ 1โ€‹Vโ€‹(๐ฑ),a2=โ„’๐ 2โ€‹Vโ€‹(๐ฑ)\,a_{1}=\mathcal{L}_{\mathbf{g}_{1}}V(\mathbf{x}),\,a_{2}=\mathcal{L}_{\mathbf{g}_{2}}V(\mathbf{x}), is

(u1u2)=โˆ’1a12+a22โ‹…(a1a2),\left(\begin{array}[]{c}u_{1}\\ u_{2}\end{array}\right)=-\frac{1}{\sqrt{a_{1}^{2}+a_{2}^{2}}}\cdot\left(\begin{array}[]{c}a_{1}\\ a_{2}\end{array}\right), (18)

we conclude that a Lyapunov like controller to reach our objective is

๐ฎ=โˆ’1(โ„’๐ 1โ€‹Vโ€‹(๐ฑ))2+(โ„’๐ 2โ€‹Vโ€‹(๐ฑ))2โ‹…(โ„’๐ 1โ€‹Vโ€‹(๐ฑ)โ„’๐ 2โ€‹Vโ€‹(๐ฑ)).\mathbf{u}=-\frac{1}{\sqrt{(\mathcal{L}_{\mathbf{g}_{1}}V(\mathbf{x}))^{2}+(\mathcal{L}_{\mathbf{g}_{2}}V(\mathbf{x}))^{2}}}\cdot\left(\begin{array}[]{c}\mathcal{L}_{\mathbf{g}_{1}}V(\mathbf{x})\\ \mathcal{L}_{\mathbf{g}_{2}}V(\mathbf{x})\end{array}\right). (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 xx-axis. We define the objective function

Vโ€‹(๐ฑ)=12โ€‹(ฯ‰22+ฯ‰32+(I2โˆ’Iยฏ2)2+(I3โˆ’Iยฏ3)2).V(\mathbf{x})=\frac{1}{2}\left(\omega_{2}^{2}+\omega_{3}^{2}+(I_{2}-\bar{I}_{2})^{2}+(I_{3}-\bar{I}_{3})^{2}\right). (20)

The quantity ฯ‰22+ฯ‰32\omega_{2}^{2}+\omega_{3}^{2} corresponds to the alignment error. Note that when Vโ€‹(๐ฑ)=0V(\mathbf{x})=0, we have ฯ‰2=ฯ‰\omega_{2}=\omega=30{}_{3}=0 (the alignment is performed) and ๐ˆ=๐ˆยฏ\mathbf{I}=\bar{\mathbf{I}} (the inertia matrix is at its nominal position). The time derivative of VV is

Vห™โ€‹(๐ฑ)=ฯ‰2โ€‹ฯ‰ห™2+ฯ‰3โ€‹ฯ‰ห™3+(I2โˆ’Iยฏ2)โ€‹Iห™2+(I3โˆ’Iยฏ3)โ€‹Iห™3=ฯ‰2โ€‹(โˆ’ฯ‰2I2โ€‹u1โˆ’ฯ‰3โ€‹ฯ‰1)+ฯ‰3โ€‹(โˆ’ฯ‰3I3โ€‹u2+ฯ‰1โ€‹ฯ‰2)+(I2โˆ’Iยฏ2)โ€‹u1+(I3โˆ’Iยฏ3)โ€‹u2=โˆ’ฯ‰22I2โ€‹u1โˆ’ฯ‰3โ€‹ฯ‰1โ€‹ฯ‰2โˆ’ฯ‰32I3โ€‹u2+ฯ‰1โ€‹ฯ‰2โ€‹ฯ‰3+(I2โˆ’Iยฏ2)โ€‹u1+(I3โˆ’Iยฏ3)โ€‹u2=0โ‹…ฯ‰1โ€‹ฯ‰2โ€‹ฯ‰3โŸโ„’๐Ÿโ€‹V+(โˆ’ฯ‰22I2+(I2โˆ’Iยฏ2))โŸโ„’๐ 1โ€‹Vโ‹…u1+(โˆ’ฯ‰32I3+(I3โˆ’Iยฏ3))โŸโ„’๐ 2โ€‹Vโ‹…u2\begin{array}[]{ccl}\dot{V}(\mathbf{x})&=&\omega_{2}\dot{\omega}_{2}+\omega_{3}\dot{\omega}_{3}+(I_{2}-\bar{I}_{2})\dot{I}_{2}+(I_{3}-\bar{I}_{3})\dot{I}_{3}\\ &=&\omega_{2}\left(-\frac{\omega_{2}}{I_{2}}u_{1}-\omega_{3}\omega_{1}\right)+\omega_{3}\left(-\frac{\omega_{3}}{I_{3}}u_{2}+\omega_{1}\omega_{2}\right)+(I_{2}-\bar{I}_{2})u_{1}+(I_{3}-\bar{I}_{3})u_{2}\\ &=&-\frac{\omega_{2}^{2}}{I_{2}}u_{1}-\omega_{3}\omega_{1}\omega_{2}-\frac{\omega_{3}^{2}}{I_{3}}u_{2}+\omega_{1}\omega_{2}\omega_{3}+(I_{2}-\bar{I}_{2})u_{1}+(I_{3}-\bar{I}_{3})u_{2}\\ &=&\underset{\mathcal{L}_{\mathbf{f}}V}{\underbrace{0\cdot\omega_{1}\omega_{2}\omega_{3}}}+\underset{\mathcal{L}_{\mathbf{g}_{1}}V}{\underbrace{\left(-\frac{\omega_{2}^{2}}{I_{2}}+(I_{2}-\bar{I}_{2})\right)}}\cdot u_{1}+\underset{\mathcal{L}_{\mathbf{g}_{2}}V}{\underbrace{\left(-\frac{\omega_{3}^{2}}{I_{3}}+(I_{3}-\bar{I}_{3})\right)}}\cdot u_{2}\end{array} (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 Vห™โ€‹(๐ฑ)=0\dot{V}(\mathbf{x})=0 if

{โˆ’ฯ‰22I2+I2โˆ’Iยฏ2=0โˆ’ฯ‰32I3+I3โˆ’Iยฏ3=0\left\{\begin{array}[]{ccc}-\frac{\omega_{2}^{2}}{I_{2}}+I_{2}-\bar{I}_{2}&=&0\\ -\frac{\omega_{3}^{2}}{I_{3}}+I_{3}-\bar{I}_{3}&=&0\end{array}\right. (22)

We conclude that it it possible to converge to values ฯ‰ยฏ1,ฯ‰ยฏ2,ฯ‰ยฏ3\bar{\omega}_{1},\bar{\omega}_{2},\bar{\omega}_{3} that do not correspond to the desired alignment. Equivalently, we may have ฯ‰ยฏ2โ‰ 0,\bar{\omega}_{2}\neq 0, or ฯ‰ยฏ3โ‰ 0\bar{\omega}_{3}\neq 0.

Figure 3 illustrates the behavior of the controller. The initial rotation vector is ๐Žโ€‹(0)=(10โˆ’5,10,0).\boldsymbol{\omega}(0)=(10^{-5},10,0). The first subfigure (top-left) shows the kinetic energy EKE_{K} of the disk (blue) and the objective function Vโ€‹(t)V(t) (red) with respect to tt for tโˆˆ[0,40]t\in[0,40]. The second subfigure (top right) shows the evolution of the components of ๐Ž\boldsymbol{\omega} in the frame box [0,40]ร—[โˆ’7,10].[0,40]\times[-7,10]. The third subfigure represents the evolution of the vector (ฯ‰2,ฯ‰3).(\omega_{2},\omega_{3}). The frame box is [โˆ’5,5]ร—[โˆ’5,5][-5,5]\times[-5,5]. The last subfigure represents the component I2,I3I_{2},I_{3} of the inertia matrix in the frame box [โˆ’0.2,2.5]ร—[โˆ’0.2,2][-0.2,2.5]\times[-0.2,2]. Since the controller is not able to cancel (ฯ‰2,ฯ‰3)(\omega_{2},\omega_{3}), we consider that the alignment objective is only partially reach.

The strategy followed by the controller is first to increase I2I_{2} to make the second axis the intermediate axis (see the 44th 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 ฯ‰2\omega_{2} of ๐Ž\boldsymbol{\omega} is able to decrease without precession (see the 33th Subfigure). Then in a second step, the control changes its strategy to generate an oscillation between I2I_{2} and I3I_{3}. This yields a convergence of ฯ‰1\omega_{1}, the rotation along the first axis. We also observe that ฯ‰2\omega_{2} and ฯ‰3\omega_{3} do not converge to a static value.

Refer to caption
Figure 3: The alignment control tends to change radically the rotation vector from one principal axis to another

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

Vโ€‹(๐ฑ)=12โ€‹I1โ€‹ฯ‰12+12โ€‹I2โ€‹ฯ‰22+12โ€‹I3โ€‹ฯ‰32+12โ€‹(I2โˆ’Iยฏ2)2+12โ€‹(I3โˆ’Iยฏ3)2.\begin{array}[]{ccc}V(\mathbf{x})&=&\frac{1}{2}I_{1}\omega_{1}^{2}+\frac{1}{2}I_{2}\omega_{2}^{2}+\frac{1}{2}I_{3}\omega_{3}^{2}+\frac{1}{2}(I_{2}-\bar{I}_{2})^{2}+\frac{1}{2}(I_{3}-\bar{I}_{3})^{2}\end{array}. (23)

The quantity 12โ€‹๐ŽrTโ€‹๐ˆโ€‹๐Žr\frac{1}{2}\boldsymbol{\omega}_{r}^{\text{T}}\mathbf{I}\boldsymbol{\omega}_{r} corresponds to kinetic energy and 12โ€‹(I2โˆ’Iยฏ2)2+12โ€‹(I3โˆ’Iยฏ3)2\frac{1}{2}(I_{2}-\bar{I}_{2})^{2}+\frac{1}{2}(I_{3}-\bar{I}_{3})^{2} is the artificial potential energy.

We have

Vห™โ€‹(๐ฑ)=I1โ€‹ฯ‰1โ€‹ฯ‰ห™1+I2โ€‹ฯ‰2โ€‹ฯ‰ห™2+I3โ€‹ฯ‰3โ€‹ฯ‰ห™3+12โ€‹ฯ‰12โ€‹Iห™1+12โ€‹ฯ‰22โ€‹Iห™2+12โ€‹ฯ‰32โ€‹Iห™3+(I2โˆ’Iยฏ2)โ€‹Iห™2+(I3โˆ’Iยฏ3)โ€‹Iห™3=(I2+I3)โ€‹ฯ‰1โ€‹(โˆ’ฯ‰1I2+I3โ€‹(u1+u2)โˆ’I3โˆ’I2I2+I3โ€‹ฯ‰2โ€‹ฯ‰3)+I2โ€‹ฯ‰2โ€‹(โˆ’ฯ‰2I2โ€‹u1โˆ’ฯ‰3โ€‹ฯ‰1)+I3โ€‹ฯ‰3โ€‹(โˆ’ฯ‰3I3โ€‹u2+ฯ‰1โ€‹ฯ‰2)+12โ€‹ฯ‰12โ€‹(u1+u2)+12โ€‹ฯ‰22โ€‹u1+12โ€‹ฯ‰32โ€‹u2+(I2โˆ’Iยฏ2)โ€‹u1+(I3โˆ’Iยฏ3)โ€‹u2=โˆ’12โ€‹ฯ‰12โ€‹u1โˆ’12โ€‹ฯ‰22โ€‹u1โˆ’12โ€‹ฯ‰12โ€‹u2โˆ’12โ€‹ฯ‰32โ€‹u2+(I2โˆ’Iยฏ2)โ€‹u1+(I3โˆ’Iยฏ3)โ€‹u2=0โŸโ„’๐Ÿโ€‹V+(โˆ’12โ€‹ฯ‰12โˆ’12โ€‹ฯ‰22+I2โˆ’Iยฏ2)โŸโ„’๐ 1โ€‹Vโ‹…u1+(โˆ’12โ€‹ฯ‰12โˆ’12โ€‹ฯ‰32+I3โˆ’Iยฏ3)โŸโ„’๐ 2โ€‹Vโ‹…u2\begin{array}[]{ccl}\dot{V}(\mathbf{x})&=&I_{1}\omega_{1}\dot{\omega}_{1}+I_{2}\omega_{2}\dot{\omega}_{2}+I_{3}\omega_{3}\dot{\omega}_{3}+\frac{1}{2}\omega_{1}^{2}\dot{I}_{1}+\frac{1}{2}\omega_{2}^{2}\dot{I}_{2}+\frac{1}{2}\omega_{3}^{2}\dot{I}_{3}\\ &&+(I_{2}-\bar{I}_{2})\dot{I}_{2}+(I_{3}-\bar{I}_{3})\dot{I}_{3}\\ &=&\left(I_{2}+I_{3}\right)\omega_{1}\left(-\frac{\omega_{1}}{I_{2}+I_{3}}(u_{1}+u_{2})-\frac{I_{3}-I_{2}}{I_{2}+I_{3}}\omega_{2}\omega_{3}\right)\\ &&+I_{2}\omega_{2}\left(-\frac{\omega_{2}}{I_{2}}u_{1}-\omega_{3}\omega_{1}\right)+I_{3}\omega_{3}\left(-\frac{\omega_{3}}{I_{3}}u_{2}+\omega_{1}\omega_{2}\right)\\ &&+\frac{1}{2}\omega_{1}^{2}(u_{1}+u_{2})+\frac{1}{2}\omega_{2}^{2}u_{1}+\frac{1}{2}\omega_{3}^{2}u_{2}+(I_{2}-\bar{I}_{2})u_{1}+(I_{3}-\bar{I}_{3})u_{2}\\ &=&-\frac{1}{2}\omega_{1}^{2}u_{1}-\frac{1}{2}\omega_{2}^{2}u_{1}-\frac{1}{2}\omega_{1}^{2}u_{2}-\frac{1}{2}\omega_{3}^{2}u_{2}+(I_{2}-\bar{I}_{2})u_{1}+(I_{3}-\bar{I}_{3})u_{2}\\ &=&\underset{\mathcal{L}_{\mathbf{f}}V}{\underbrace{0}}+\underset{\mathcal{L}_{\mathbf{g}_{1}}V}{\underbrace{\left(-\frac{1}{2}\omega_{1}^{2}-\frac{1}{2}\omega_{2}^{2}+I_{2}-\bar{I}_{2}\right)}}\cdot u_{1}+\underset{\mathcal{L}_{\mathbf{g}_{2}}V}{\underbrace{\left(-\frac{1}{2}\omega_{1}^{2}-\frac{1}{2}\omega_{3}^{2}+I_{3}-\bar{I}_{3}\right)}}\cdot u_{2}\end{array}

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 tโˆˆ[0,40]t\in[0,40]. The initial rotation vector is ๐Žโ€‹(0)=(10,4,1).\boldsymbol{\omega}(0)=(10,4,1). The meaning of the plots are those given for Figure 3. The frame for the subfigures are [0,40]ร—[0,1][0,40]\times[0,1], [0,40]ร—[โˆ’5,10],[0,40]\times[-5,10], [โˆ’5,5]ร—[โˆ’5,5][-5,5]\times[-5,5] and [โˆ’0.2,6]ร—[โˆ’0.2,6][-0.2,6]\times[-0.2,6], respectively. We observe that the passivity approach for the flat disk is not sufficient to cancel the precession.

Refer to caption
Figure 4: For the flat disk, a passivity approach is not sufficient to cancel the precession

3.4 Precession controller

To cancel the precession, we define the objective function

Vโ€‹(๐ฑ)=12โ€‹((I3โˆ’I2)โ€‹ฯ‰2โ€‹ฯ‰3)2+12โ€‹((I1โˆ’I3)โ€‹ฯ‰3โ€‹ฯ‰1)2+12โ€‹((I2โˆ’I1)โ€‹ฯ‰1โ€‹ฯ‰2)2+12โ€‹(I2โˆ’Iยฏ2)2+12โ€‹(I3โˆ’Iยฏ3)2.\begin{array}[]{ccc}V(\mathbf{x})&=&\frac{1}{2}\left((I_{3}-I_{2})\omega_{2}\omega_{3}\right)^{2}+\frac{1}{2}\left((I_{1}-I_{3})\omega_{3}\omega_{1}\right)^{2}+\frac{1}{2}\left((I_{2}-I_{1})\omega_{1}\omega_{2}\right)^{2}\\ &&+\frac{1}{2}(I_{2}-\bar{I}_{2})^{2}+\frac{1}{2}(I_{3}-\bar{I}_{3})^{2}.\end{array} (24)

The quantity

((I3โˆ’I2)โ€‹ฯ‰2โ€‹ฯ‰3)2+((I1โˆ’I3)โ€‹ฯ‰3โ€‹ฯ‰1)2+((I2โˆ’I1)โ€‹ฯ‰1โ€‹ฯ‰2)2=โ€–๐Žrโˆง๐ˆโ‹…๐Žrโ€–2\left((I_{3}-I_{2})\omega_{2}\omega_{3}\right)^{2}+\left((I_{1}-I_{3})\omega_{3}\omega_{1}\right)^{2}+\left((I_{2}-I_{1})\omega_{1}\omega_{2}\right)^{2}=\|\boldsymbol{\omega}_{r}\wedge\mathbf{I}\cdot\boldsymbol{\omega}_{r}\|^{2} (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 ๐Žrโˆง๐ˆโ‹…๐Žr=๐ŸŽ\boldsymbol{\omega}_{r}\wedge\mathbf{I}\cdot\boldsymbol{\omega}_{r}=\mathbf{0}, we see from the Euler equation that ๐Žห™r=๐ŸŽ\dot{\boldsymbol{\omega}}_{r}=\mathbf{0} when ๐ฎ=๐ŸŽ,\mathbf{u}=\mathbf{0},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

โ„’๐Ÿโ€‹Vโ€‹(๐ฑ)=((ฯ‰22โ€‹I32+ฯ‰32โ€‹I22)โ€‹(I2โˆ’I3)+(I2+I3)โ€‹((I2โˆ’I3)2โ€‹ฯ‰22โˆ’(I2โˆ’I3)2โ€‹ฯ‰32+ฯ‰12โ€‹I22โˆ’ฯ‰12โ€‹I32))โ€‹ฯ‰1โ€‹ฯ‰2โ€‹ฯ‰3I2+I3โ„’๐ 1โ€‹Vโ€‹(๐ฑ)=1โˆ’((I2โˆ’I3)2โ€‹ฯ‰32+ฯ‰12โ€‹I32)โ€‹ฯ‰22I2โˆ’(ฯ‰22โ€‹I32+ฯ‰32โ€‹I22)โ€‹ฯ‰12I2+I3+(I2โˆ’Iยฏ2)+(I2โˆ’I3)โ€‹ฯ‰22โ€‹ฯ‰32+ฯ‰12โ€‹ฯ‰32โ€‹I2I2+I3โ„’๐ 2โ€‹Vโ€‹(๐ฑ)=1โˆ’((I2โˆ’I3)2โ€‹ฯ‰22+ฯ‰12โ€‹I22)โ€‹ฯ‰32I3โˆ’(ฯ‰22โ€‹I32+ฯ‰32โ€‹I22)โ€‹ฯ‰12I2+I3+(I3โˆ’Iยฏ3)+(I3โˆ’I2)โ€‹ฯ‰22โ€‹ฯ‰32+ฯ‰12โ€‹ฯ‰22โ€‹I3I2+I3\begin{array}[]{ccc}\mathcal{L}_{\mathbf{f}}V(\mathbf{x})&=&\frac{\left(\left(\omega_{2}^{2}I_{3}^{2}+\omega_{3}^{2}I_{2}^{2}\right)\left(I_{2}-I_{3}\right)+\left(I_{2}+I_{3}\right)\left(\left(I_{2}-I_{3}\right)^{2}\omega_{2}^{2}-\left(I_{2}-I_{3}\right)^{2}\omega_{3}^{2}+\omega_{1}^{2}I_{2}^{2}-\omega_{1}^{2}I_{3}^{2}\right)\right)\omega_{1}\omega_{2}\omega_{3}}{I_{2}+I_{3}}\\ \mathcal{L}_{\mathbf{g}_{1}}V(\mathbf{x})&=&\frac{1-\left(\left(I_{2}-I_{3}\right)^{2}\omega_{3}^{2}+\omega_{1}^{2}I_{3}^{2}\right)\omega_{2}^{2}}{I_{2}}-\frac{\left(\omega_{2}^{2}I_{3}^{2}+\omega_{3}^{2}I_{2}^{2}\right)\omega_{1}^{2}}{I_{2}+I_{3}}+\frac{\left(I_{2}-\bar{I}_{2}\right)+\left(I_{2}-I_{3}\right)\omega_{2}^{2}\omega_{3}^{2}+\omega_{1}^{2}\omega_{3}^{2}I_{2}}{I_{2}+I_{3}}\\ \mathcal{L}_{\mathbf{g}_{2}}V(\mathbf{x})&=&\frac{1-\left(\left(I_{2}-I_{3}\right)^{2}\omega_{2}^{2}+\omega_{1}^{2}I_{2}^{2}\right)\omega_{3}^{2}}{I_{3}}-\frac{\left(\omega_{2}^{2}I_{3}^{2}+\omega_{3}^{2}I_{2}^{2}\right)\omega_{1}^{2}}{I_{2}+I_{3}}+\frac{\left(I_{3}-\bar{I}_{3}\right)+\left(I_{3}-I_{2}\right)\omega_{2}^{2}\omega_{3}^{2}+\omega_{1}^{2}\omega_{2}^{2}I_{3}}{I_{2}+I_{3}}\end{array}

Figure 5 illustrates the behavior of the controller for tโˆˆ[0,80]t\in[0,80]. Again, the initial rotation vector is ๐Žโ€‹(0)=(10,4,1).\boldsymbol{\omega}(0)=(10,4,1). The meaning of the plots are those given for Figure 3. The frame for the subfigures are [0,80]ร—[0,1][0,80]\times[0,1], [0,80]ร—[โˆ’5,10],[0,80]\times[-5,10], [โˆ’5,5]ร—[โˆ’5,5][-5,5]\times[-5,5] and [โˆ’0.2,6]ร—[โˆ’0.2,6][-0.2,6]\times[-0.2,6] respectively. We observe that the controller easily cancel the precession of the flat disk.

Refer to caption
Figure 5: The controller cancel the precession efficiently

3.5 Combination

As for Subsection 3.2, assume that at time t=0t=0, we spin around the second axis:

๐Žrโ€‹(0)=(10โˆ’5,10,0)\boldsymbol{\omega}_{r}(0)=(10^{-5},10,0)

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 ๐Žr\boldsymbol{\omega}_{r} converge to the nearest principal axis.

Figure 6 illustrates the behavior of the controller. For tโˆˆ[0,20]t\in[0,20], we apply the alignment control and for tโˆˆ[20,40]t\in[20,40], we apply the precession control. The objective can be considered has reached since we were able to go from ๐Žr=(10โˆ’5,10,0)\boldsymbol{\omega}_{r}=(10^{-5},10,0) to ๐Žr=(5,0,0)\boldsymbol{\omega}_{r}=(5,0,0) without any external force. This discontinuity observed for VV on the first subfigure is due to the change of objective function at time t=20.t=20. The frame for the subfigures are [0,40]ร—[0,1][0,40]\times[0,1], [0,40]ร—[โˆ’5,10],[0,40]\times[-5,10], [โˆ’5,5]ร—[โˆ’5,5][-5,5]\times[-5,5] and [โˆ’0.2,4]ร—[โˆ’0.2,3][-0.2,4]\times[-0.2,3], respectively.

A video illustrating the disk spinning and changing its rotation thanks to the moving masses in the flat disk is given at:

https://youtu.be/gRzlDYFuMts

Refer to caption
Figure 6: The combination of the two controllers solves the alignment problem perfectly

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 xx 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

https://www.ensta-bretagne.fr/jaulin/flatdisk.html

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.