diff --git a/docs/control-tracking.html b/docs/control-tracking.html index 6f71fe6..2b89ab4 100644 --- a/docs/control-tracking.html +++ b/docs/control-tracking.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Stewart Platform - Tracking Control @@ -248,42 +248,42 @@
  • 3. Hybrid Control Architecture - HAC-LAC with relative DVF
  • 4. Comparison of all the methods
  • @@ -351,8 +351,8 @@ The control configuration are compare in section 4.

    -
    -

    1.1 Control Schematic

    +
    +

    1.1 Control Schematic

    The control architecture is shown in Figure 1. @@ -375,8 +375,8 @@ Then, a diagonal (decentralized) controller \(\bm{K}_\mathcal{L}\) is used such

    -
    -

    1.2 Initialize the Stewart platform

    +
    +

    1.2 Initialize the Stewart platform

    % Stewart Platform
    @@ -407,8 +407,8 @@ references = initializeReferences(stewart);
     
    -
    -

    1.3 Identification of the plant

    +
    +

    1.3 Identification of the plant

    Let’s identify the transfer function from \(\bm{\tau}\) to \(\bm{\mathcal{L}}\). @@ -431,8 +431,8 @@ G.OutputName = {'L1', '

    -
    -

    1.4 Plant Analysis

    +
    +

    1.4 Plant Analysis

    The diagonal terms of the plant is shown in Figure 2. @@ -466,8 +466,8 @@ We see that the plant is decoupled at low frequency which indicate that decentra

    -
    -

    1.5 Controller Design

    +
    +

    1.5 Controller Design

    The controller consists of: @@ -496,8 +496,8 @@ Kl = diag(1./diag(abs(freqresp(G, wc))))

    -
    -

    1.6 Simulation

    +
    +

    1.6 Simulation

    Let’s define some reference path to follow. @@ -596,8 +596,8 @@ zlim([0, inf]);

    -
    -

    1.8 Conclusion

    +
    +

    1.8 Conclusion

    Such control architecture is easy to implement and give good results. @@ -618,8 +618,8 @@ However, as \(\mathcal{X}\) is not directly measured, it is possible that import

    -
    -

    2.1 Control Schematic

    +
    +

    2.1 Control Schematic

    The centralized controller takes the position error \(\bm{\epsilon}_\mathcal{X}\) as an inputs and generate actuator forces \(\bm{\tau}\) (see Figure 9). @@ -657,8 +657,8 @@ It is indeed a more complex computation explained in section -

    2.2 Initialize the Stewart platform

    +
    +

    2.2 Initialize the Stewart platform

    % Stewart Platform
    @@ -689,8 +689,8 @@ references = initializeReferences(stewart);
     
    -
    -

    2.3 Identification of the plant

    +
    +

    2.3 Identification of the plant

    -
    -

    2.4.1 Control Architecture

    +
    +

    2.4.1 Control Architecture

    The pose error \(\bm{\epsilon}_\mathcal{X}\) is first converted in the frame of the leg by using the Jacobian matrix. @@ -742,8 +742,8 @@ Note here that the transformation from the pose error \(\bm{\epsilon}_\mathcal{X

    -
    -

    2.4.2 Plant Analysis

    +
    +

    2.4.2 Plant Analysis

    We now multiply the plant by the Jacobian matrix as shown in Figure 10 to obtain a more diagonal plant. @@ -793,8 +793,8 @@ Thus \(J \cdot G(\omega = 0) = J \cdot \frac{\delta\bm{\mathcal{X}}}{\delta\bm{\

    -
    -

    2.4.3 Controller Design

    +
    +

    2.4.3 Controller Design

    The controller consists of: @@ -831,8 +831,8 @@ The controller \(\bm{K} = \bm{K}_\mathcal{L} \bm{J}\) is computed.

    -
    -

    2.4.4 Simulation

    +
    +

    2.4.4 Simulation

    We specify the reference path to follow. @@ -876,8 +876,8 @@ save('./mat/control_tracking.mat',

    -
    -

    2.5.1 Control Architecture

    +
    +

    2.5.1 Control Architecture

    A diagonal controller \(\bm{K}_\mathcal{X}\) take the pose error \(\bm{\epsilon}_\mathcal{X}\) and generate cartesian forces \(\bm{\mathcal{F}}\) that are then converted to actuators forces using the Jacobian as shown in Figure e 14. @@ -896,8 +896,8 @@ The final implemented controller is \(\bm{K} = \bm{J}^{-T} \cdot \bm{K}_\mathcal

    -
    -

    2.5.2 Plant Analysis

    +
    +

    2.5.2 Plant Analysis

    We now multiply the plant by the Jacobian matrix as shown in Figure 14 to obtain a more diagonal plant. @@ -1019,8 +1019,8 @@ This control architecture can also give a dynamically decoupled plant if the Cen

    -
    -

    2.5.3 Controller Design

    +
    +

    2.5.3 Controller Design

    The controller consists of: @@ -1057,8 +1057,8 @@ The controller \(\bm{K} = \bm{J}^{-T} \bm{K}_\mathcal{X}\) is computed.

    -
    -

    2.5.4 Simulation

    +
    +

    2.5.4 Simulation

    We specify the reference path to follow. @@ -1102,8 +1102,8 @@ save('./mat/control_tracking.mat',

    -
    -

    2.6.1 Control Architecture

    +
    +

    2.6.1 Control Architecture

    The plant \(\bm{G}\) is pre-multiply by \(\bm{G}^{-1}(\omega = 0)\) such that the “shaped plant” \(\bm{G}_0 = \bm{G} \bm{G}^{-1}(\omega = 0)\) is diagonal at low frequency. @@ -1126,8 +1126,8 @@ The control architecture is shown in Figure 18.

    -
    -

    2.6.2 Plant Analysis

    +
    +

    2.6.2 Plant Analysis

    The plant is pre-multiplied by \(\bm{G}^{-1}(\omega = 0)\). @@ -1155,8 +1155,8 @@ The diagonal elements of the shaped plant are shown in Figure -

    2.6.3 Controller Design

    +
    +

    2.6.3 Controller Design

    We have that: @@ -1222,8 +1222,8 @@ This error is much lower when using the diagonal control in the frame of the leg

    -
    -

    2.8 Conclusion

    +
    +

    2.8 Conclusion

    -
    -

    3.1 Control Schematic

    +
    +

    3.1 Control Schematic

    Let’s consider the control schematic shown in Figure 23. @@ -1348,8 +1348,8 @@ This second loop is responsible for the reference tracking.

    -
    -

    3.2 Initialize the Stewart platform

    +
    +

    3.2 Initialize the Stewart platform

    % Stewart Platform
    @@ -1384,8 +1384,8 @@ references = initializeReferences(stewart);
     

    3.3 First Control Loop - \(\bm{K}_\mathcal{L}\)

    -
    -

    3.3.1 Identification

    +
    +

    3.3.1 Identification

    Let’s identify the transfer function from \(\bm{\tau}\) to \(\bm{L}\). @@ -1408,8 +1408,8 @@ Gl.OutputName = {'L1',

    -
    -

    3.3.2 Obtained Plant

    +
    +

    3.3.2 Obtained Plant

    The diagonal elements of the plant are shown in Figure 24 while the off diagonal terms are shown in Figure 25. @@ -1431,8 +1431,8 @@ The diagonal elements of the plant are shown in Figure 24<

    -
    -

    3.3.3 Controller Design

    +
    +

    3.3.3 Controller Design

    We apply a decentralized (diagonal) direct velocity feedback. @@ -1464,8 +1464,8 @@ The obtain loop gain is shown in Figure 26.

    3.4 Second Control Loop - \(\bm{K}_\mathcal{X}\)

    -
    -

    3.4.1 Identification

    +
    +

    3.4.1 Identification

    Kx = tf(zeros(6));
    @@ -1492,8 +1492,8 @@ G.OutputName = {'Dx', '
     
    -
    -

    3.4.2 Obtained Plant

    +
    +

    3.4.2 Obtained Plant

    We use the Jacobian matrix to apply forces in the cartesian frame. @@ -1516,15 +1516,17 @@ The obtained plant is shown in Figure 27.

    -
    -

    3.4.3 Controller Design

    +
    +

    3.4.3 Controller Design

    The controller consists of:

    • A pure integrator
    • -
    • A low pass filter with a cut-off frequency 3 times the crossover to increase the gain margin
    • +
    • A Second integrator up to half the wanted bandwidth
    • +
    • A Lead around the cross-over frequency
    • +
    • A low pass filter with a cut-off equal to three times the wanted bandwidth
    @@ -1532,7 +1534,7 @@ The controller consists of: h = 3; % Lead parameter -Kx = (1/h) * (1 + s/wc*h)/(1 + s/wc/h) * wc/s * ((s/wc/2 + 1)/(s/wc/2)); +Kx = (1/h) * (1 + s/wc*h)/(1 + s/wc/h) * wc/s * ((s/wc*2 + 1)/(s/wc*2)) * (1/(1 + s/wc/3)); % Normalization of the gain of have a loop gain of 1 at frequency wc Kx = Kx.*diag(1./diag(abs(freqresp(Gx*Kx, wc)))); @@ -1600,8 +1602,8 @@ The obtained position error is shown in Figure 29.
    -
    -

    3.6 Conclusion

    +
    +

    3.6 Conclusion

    @@ -1765,7 +1767,7 @@ Erz = atan2(-T(1, 2)/

    Author: Dehaeze Thomas

    -

    Created: 2020-03-13 ven. 13:12

    +

    Created: 2020-03-13 ven. 13:23

    diff --git a/docs/figs/hybrid_control_Kx_loop_gain.pdf b/docs/figs/hybrid_control_Kx_loop_gain.pdf index bae1e32..3753188 100644 Binary files a/docs/figs/hybrid_control_Kx_loop_gain.pdf and b/docs/figs/hybrid_control_Kx_loop_gain.pdf differ diff --git a/docs/figs/hybrid_control_Kx_loop_gain.png b/docs/figs/hybrid_control_Kx_loop_gain.png index 4812dcb..0cbb07b 100644 Binary files a/docs/figs/hybrid_control_Kx_loop_gain.png and b/docs/figs/hybrid_control_Kx_loop_gain.png differ diff --git a/org/control-tracking.org b/org/control-tracking.org index 0a1cb88..9c5daee 100644 --- a/org/control-tracking.org +++ b/org/control-tracking.org @@ -1529,14 +1529,16 @@ The obtained plant is shown in Figure [[fig:hybrid_control_Kx_plant]]. *** Controller Design The controller consists of: - A pure integrator -- A low pass filter with a cut-off frequency 3 times the crossover to increase the gain margin +- A Second integrator up to half the wanted bandwidth +- A Lead around the cross-over frequency +- A low pass filter with a cut-off equal to three times the wanted bandwidth #+begin_src matlab wc = 2*pi*200; % Bandwidth Bandwidth [rad/s] h = 3; % Lead parameter - Kx = (1/h) * (1 + s/wc*h)/(1 + s/wc/h) * wc/s * ((s/wc/2 + 1)/(s/wc/2)); + Kx = (1/h) * (1 + s/wc*h)/(1 + s/wc/h) * wc/s * ((s/wc*2 + 1)/(s/wc*2)) * (1/(1 + s/wc/3)); % Normalization of the gain of have a loop gain of 1 at frequency wc Kx = Kx.*diag(1./diag(abs(freqresp(Gx*Kx, wc))));