From ec58979f2c7ec5db0384fc2188e3e746bc943a7e Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Thu, 13 Feb 2020 14:50:30 +0100 Subject: [PATCH] Active Damping Rework for new simscape model --- docs/active-damping.html | 106 +++++++++++++++++++++++---------------- org/active-damping.org | 39 +++++++++----- 2 files changed, 89 insertions(+), 56 deletions(-) diff --git a/docs/active-damping.html b/docs/active-damping.html index e88d9a2..06f97dd 100644 --- a/docs/active-damping.html +++ b/docs/active-damping.html @@ -4,7 +4,7 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + Stewart Platform - Decentralized Active Damping @@ -271,25 +271,25 @@ for the JavaScript code in this tag.
  • 1. Inertial Control
  • 2. Integral Force Feedback
  • 3. Direct Velocity Feedback
  • @@ -331,18 +331,24 @@ stewart = initializeInertialSensor(stewart, 'type' +
    +
    ground = initializeGround('type', 'none');
    +payload = initializePayload('type', 'none');
    +
    +
    +
    %% Options for Linearized
     options = linearizeOptions;
     options.SampleTime = 0;
     
     %% Name of the Simulink File
    -mdl = 'stewart_active_damping';
    +mdl = 'stewart_platform_model';
     
     %% Input/Output definition
     clear io; io_i = 1;
    -io(io_i) = linio([mdl, '/F'],   1, 'openinput');  io_i = io_i + 1; % Actuator Force Inputs [N]
    -io(io_i) = linio([mdl, '/Vm'],  1, 'openoutput'); io_i = io_i + 1; % Absolute velocity of each leg [m/s]
    +io(io_i) = linio([mdl, '/Controller'],        1, 'openinput');  io_i = io_i + 1; % Actuator Force Inputs [N]
    +io(io_i) = linio([mdl, '/Stewart Platform'],  1, 'openoutput', [], 'Vm'); io_i = io_i + 1; % Absolute velocity of each leg [m/s]
     
     %% Run the linearization
     G = linearize(mdl, io, options);
    @@ -363,8 +369,8 @@ The transfer function from actuator forces to force sensors is shown in Figure <
     
    -
    -

    1.2 Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics

    +
    +

    1.2 Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics

    We add some stiffness and damping in the flexible joints and we re-identify the dynamics. @@ -400,8 +406,8 @@ The new dynamics from force actuator to force sensor is shown in Figure

    -
    -

    1.3 Obtained Damping

    +
    -
    -

    1.4 Conclusion

    +
    +

    1.4 Conclusion

    @@ -447,8 +453,8 @@ We do not have guaranteed stability with Inertial control. This is because of th

    -
    -

    2.1 Identification of the Dynamics with perfect Joints

    +
    +

    2.1 Identification of the Dynamics with perfect Joints

    We first initialize the Stewart platform without joint stiffness. @@ -468,6 +474,12 @@ stewart = initializeInertialSensor(stewart, 'type'

    +
    +
    ground = initializeGround('type', 'none');
    +payload = initializePayload('type', 'none');
    +
    +
    +

    And we identify the dynamics from force actuators to force sensors.

    @@ -477,12 +489,12 @@ options = linearizeOptions; options.SampleTime = 0; %% Name of the Simulink File -mdl = 'stewart_active_damping'; +mdl = 'stewart_platform_model'; %% Input/Output definition clear io; io_i = 1; -io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1; % Actuator Force Inputs [N] -io(io_i) = linio([mdl, '/Fm'], 1, 'openoutput'); io_i = io_i + 1; % Force Sensor Outputs [N] +io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Force Inputs [N] +io(io_i) = linio([mdl, '/Stewart Platform'], 1, 'openoutput', [], 'Taum'); io_i = io_i + 1; % Force Sensor Outputs [N] %% Run the linearization G = linearize(mdl, io, options); @@ -503,8 +515,8 @@ The transfer function from actuator forces to force sensors is shown in Figure <
    -
    -

    2.2 Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics

    +
    +

    2.2 Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics

    We add some stiffness and damping in the flexible joints and we re-identify the dynamics. @@ -540,8 +552,8 @@ The new dynamics from force actuator to force sensor is shown in Figure

    -
    -

    2.3 Obtained Damping

    +
    -
    -

    2.4 Conclusion

    +
    +

    2.4 Conclusion

    @@ -595,8 +607,8 @@ Thus, if Integral Force Feedback is to be used in a Stewart platform with flexib

    -
    -

    3.1 Identification of the Dynamics with perfect Joints

    +
    +

    3.1 Identification of the Dynamics with perfect Joints

    We first initialize the Stewart platform without joint stiffness. @@ -616,6 +628,12 @@ stewart = initializeInertialSensor(stewart, 'type'

    +
    +
    ground = initializeGround('type', 'none');
    +payload = initializePayload('type', 'none');
    +
    +
    +

    And we identify the dynamics from force actuators to force sensors.

    @@ -625,12 +643,12 @@ options = linearizeOptions; options.SampleTime = 0; %% Name of the Simulink File -mdl = 'stewart_active_damping'; +mdl = 'stewart_platform_model'; %% Input/Output definition clear io; io_i = 1; -io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1; % Actuator Force Inputs [N] -io(io_i) = linio([mdl, '/Dm'], 1, 'openoutput'); io_i = io_i + 1; % Relative Displacement Outputs [N] +io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Force Inputs [N] +io(io_i) = linio([mdl, '/Stewart Platform'], 1, 'openoutput', [], 'dLm'); io_i = io_i + 1; % Relative Displacement Outputs [m] %% Run the linearization G = linearize(mdl, io, options); @@ -652,8 +670,8 @@ The transfer function from actuator forces to relative motion sensors is shown i
    -
    -

    3.2 Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics

    +
    +

    3.2 Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics

    We add some stiffness and damping in the flexible joints and we re-identify the dynamics. @@ -689,8 +707,8 @@ The new dynamics from force actuator to relative motion sensor is shown in Figur

    -
    -

    3.3 Obtained Damping

    +
    +

    3.3 Obtained Damping

    The control is a performed in a decentralized manner. @@ -715,8 +733,8 @@ The root locus is shown in figure 10.

    -
    -

    3.4 Conclusion

    +
    +

    3.4 Conclusion

    @@ -730,7 +748,7 @@ Joint stiffness does increase the resonance frequencies of the system but does n

    Author: Dehaeze Thomas

    -

    Created: 2020-02-11 mar. 18:04

    +

    Created: 2020-02-13 jeu. 14:50

    diff --git a/org/active-damping.org b/org/active-damping.org index e145ef1..e1873c7 100644 --- a/org/active-damping.org +++ b/org/active-damping.org @@ -66,7 +66,7 @@ The following decentralized active damping techniques are briefly studied: #+end_src #+begin_src matlab - open('simulink/stewart_active_damping.slx') + open('stewart_platform_model.slx') #+end_src ** Identification of the Dynamics @@ -84,18 +84,23 @@ The following decentralized active damping techniques are briefly studied: stewart = initializeInertialSensor(stewart, 'type', 'accelerometer', 'freq', 5e3); #+end_src +#+begin_src matlab + ground = initializeGround('type', 'none'); + payload = initializePayload('type', 'none'); +#+end_src + #+begin_src matlab %% Options for Linearized options = linearizeOptions; options.SampleTime = 0; %% Name of the Simulink File - mdl = 'stewart_active_damping'; + mdl = 'stewart_platform_model'; %% Input/Output definition clear io; io_i = 1; - io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1; % Actuator Force Inputs [N] - io(io_i) = linio([mdl, '/Vm'], 1, 'openoutput'); io_i = io_i + 1; % Absolute velocity of each leg [m/s] + io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Force Inputs [N] + io(io_i) = linio([mdl, '/Stewart Platform'], 1, 'openoutput', [], 'Vm'); io_i = io_i + 1; % Absolute velocity of each leg [m/s] %% Run the linearization G = linearize(mdl, io, options); @@ -284,7 +289,7 @@ The root locus is shown in figure [[fig:root_locus_inertial_rot_stiffness]]. #+end_src #+begin_src matlab - open('simulink/stewart_active_damping.slx') + open('stewart_platform_model.slx') #+end_src ** Identification of the Dynamics with perfect Joints @@ -303,6 +308,11 @@ We first initialize the Stewart platform without joint stiffness. stewart = initializeInertialSensor(stewart, 'type', 'none'); #+end_src +#+begin_src matlab + ground = initializeGround('type', 'none'); + payload = initializePayload('type', 'none'); +#+end_src + And we identify the dynamics from force actuators to force sensors. #+begin_src matlab %% Options for Linearized @@ -310,12 +320,12 @@ And we identify the dynamics from force actuators to force sensors. options.SampleTime = 0; %% Name of the Simulink File - mdl = 'stewart_active_damping'; + mdl = 'stewart_platform_model'; %% Input/Output definition clear io; io_i = 1; - io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1; % Actuator Force Inputs [N] - io(io_i) = linio([mdl, '/Fm'], 1, 'openoutput'); io_i = io_i + 1; % Force Sensor Outputs [N] + io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Force Inputs [N] + io(io_i) = linio([mdl, '/Stewart Platform'], 1, 'openoutput', [], 'Taum'); io_i = io_i + 1; % Force Sensor Outputs [N] %% Run the linearization G = linearize(mdl, io, options); @@ -542,7 +552,7 @@ The root locus is shown in figure [[fig:root_locus_iff_rot_stiffness]] and the o #+end_src #+begin_src matlab - open('simulink/stewart_active_damping.slx') + open('stewart_platform_model.slx') #+end_src ** Identification of the Dynamics with perfect Joints @@ -561,6 +571,11 @@ We first initialize the Stewart platform without joint stiffness. stewart = initializeInertialSensor(stewart, 'type', 'none'); #+end_src +#+begin_src matlab + ground = initializeGround('type', 'none'); + payload = initializePayload('type', 'none'); +#+end_src + And we identify the dynamics from force actuators to force sensors. #+begin_src matlab %% Options for Linearized @@ -568,12 +583,12 @@ And we identify the dynamics from force actuators to force sensors. options.SampleTime = 0; %% Name of the Simulink File - mdl = 'stewart_active_damping'; + mdl = 'stewart_platform_model'; %% Input/Output definition clear io; io_i = 1; - io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1; % Actuator Force Inputs [N] - io(io_i) = linio([mdl, '/Dm'], 1, 'openoutput'); io_i = io_i + 1; % Relative Displacement Outputs [N] + io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Force Inputs [N] + io(io_i) = linio([mdl, '/Stewart Platform'], 1, 'openoutput', [], 'dLm'); io_i = io_i + 1; % Relative Displacement Outputs [m] %% Run the linearization G = linearize(mdl, io, options);