Add Disturbances and Reference initialization
This commit is contained in:
parent
d87701c3ad
commit
0aad830597
Binary file not shown.
@ -118,14 +118,13 @@ As always, the parameters that define the geometry are taken from the =stewart=
|
|||||||
|
|
||||||
* Subsystem - Struts
|
* Subsystem - Struts
|
||||||
<<sec:struts>>
|
<<sec:struts>>
|
||||||
** Strut Configuration
|
|
||||||
For the Stewart platform, the 6 struts are identical.
|
For the Stewart platform, the 6 struts are identical.
|
||||||
Thus, all the struts used in the Stewart platform are referring to the same subsystem called =stewart_strut.slx= and shown in Figure [[fig:simscape_strut]].
|
Thus, all the struts used in the Stewart platform are referring to the same subsystem called =stewart_strut.slx= and shown in Figure [[fig:simscape_strut]].
|
||||||
|
|
||||||
This strut as the following structure:
|
This strut has the following structure:
|
||||||
- *Universal Joint** connected on the Fixed base
|
- *Universal Joint* connected on the Fixed base
|
||||||
- *Prismatic Joint** for the actuator
|
- *Prismatic Joint* for the actuator
|
||||||
- *Spherical Joint** connected on the Mobile platform
|
- *Spherical Joint* connected on the Mobile platform
|
||||||
|
|
||||||
This configuration is called *UPS*.
|
This configuration is called *UPS*.
|
||||||
|
|
||||||
@ -310,3 +309,127 @@ This Matlab function is accessible [[file:../src/initializeGround.m][here]].
|
|||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
ground.rot_point = args.rot_point;
|
ground.rot_point = args.rot_point;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
* Initialize Disturbances
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:matlab+: :tangle ../src/initializeDisturbances.m
|
||||||
|
:header-args:matlab+: :comments none :mkdirp yes
|
||||||
|
:header-args:matlab+: :eval no :results none
|
||||||
|
:END:
|
||||||
|
<<sec:initializeDisturbances>>
|
||||||
|
|
||||||
|
** Function Declaration and Documentation
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
function [disturbances] = initializeDisturbances(args)
|
||||||
|
% initializeDisturbances - Initialize the disturbances
|
||||||
|
%
|
||||||
|
% Syntax: [disturbances] = initializeDisturbances(args)
|
||||||
|
%
|
||||||
|
% Inputs:
|
||||||
|
% - args -
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Optional Parameters
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
arguments
|
||||||
|
args.Fd double {mustBeNumeric, mustBeReal} = zeros(6,1)
|
||||||
|
args.Fd_t double {mustBeNumeric, mustBeReal} = 0
|
||||||
|
args.Dw double {mustBeNumeric, mustBeReal} = zeros(6,1)
|
||||||
|
args.Dw_t double {mustBeNumeric, mustBeReal} = 0
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
|
** Structure initialization
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
disturbances = struct();
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Ground Motion
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
disturbances.Dw = timeseries([args.Dw], args.Dw_t);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Direct Forces
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
disturbances.Fd = timeseries([args.Fd], args.Fd_t);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Initialize References
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args:matlab+: :tangle ../src/initializeReferences.m
|
||||||
|
:header-args:matlab+: :comments none :mkdirp yes
|
||||||
|
:header-args:matlab+: :eval no :results none
|
||||||
|
:END:
|
||||||
|
<<sec:initializeReferences>>
|
||||||
|
|
||||||
|
** Function Declaration and Documentation
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
function [references] = initializeReferences(stewart, args)
|
||||||
|
% initializeReferences - Initialize the references
|
||||||
|
%
|
||||||
|
% Syntax: [references] = initializeReferences(args)
|
||||||
|
%
|
||||||
|
% Inputs:
|
||||||
|
% - args -
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Optional Parameters
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
arguments
|
||||||
|
stewart
|
||||||
|
args.t double {mustBeNumeric, mustBeReal} = 0
|
||||||
|
args.r double {mustBeNumeric, mustBeReal} = zeros(6, 1)
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Compute the corresponding strut length
|
||||||
|
#+begin_src matlab
|
||||||
|
rL = zeros(6, length(args.t));
|
||||||
|
|
||||||
|
for i = 1:length(args.t)
|
||||||
|
R = [cos(args.r(6,i)) -sin(args.r(6,i)) 0;
|
||||||
|
sin(args.r(6,i)) cos(args.r(6,i)) 0;
|
||||||
|
0 0 1] * ...
|
||||||
|
[cos(args.r(5,i)) 0 sin(args.r(5,i));
|
||||||
|
0 1 0;
|
||||||
|
-sin(args.r(5,i)) 0 cos(args.r(5,i))] * ...
|
||||||
|
[1 0 0;
|
||||||
|
0 cos(args.r(4,i)) -sin(args.r(4,i));
|
||||||
|
0 sin(args.r(4,i)) cos(args.r(4,i))];
|
||||||
|
|
||||||
|
[Li, dLi] = inverseKinematics(stewart, 'AP', [args.r(1,i); args.r(2,i); args.r(3,i)], 'ARB', R);
|
||||||
|
rL(:, i) = dLi;
|
||||||
|
end
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** References
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
#+begin_src matlab
|
||||||
|
references.r = timeseries(args.r, args.t);
|
||||||
|
references.rL = timeseries(rL, args.t);
|
||||||
|
#+end_src
|
||||||
|
@ -7,7 +7,7 @@ function [controller] = initializeController(args)
|
|||||||
% - args - Can have the following fields:
|
% - args - Can have the following fields:
|
||||||
|
|
||||||
arguments
|
arguments
|
||||||
args.type char {mustBeMember(args.type, {'open-loop', 'iff', 'dvf', 'hac-iff', 'hac-dvf'})} = 'open-loop'
|
args.type char {mustBeMember(args.type, {'open-loop', 'iff', 'dvf', 'hac-iff', 'hac-dvf', 'ref-track-L', 'ref-track-X'})} = 'open-loop'
|
||||||
end
|
end
|
||||||
|
|
||||||
controller = struct();
|
controller = struct();
|
||||||
@ -23,4 +23,8 @@ switch args.type
|
|||||||
controller.type = 3;
|
controller.type = 3;
|
||||||
case 'hac-dvf'
|
case 'hac-dvf'
|
||||||
controller.type = 4;
|
controller.type = 4;
|
||||||
|
case 'ref-track-L'
|
||||||
|
controller.type = 5;
|
||||||
|
case 'ref-track-X'
|
||||||
|
controller.type = 6;
|
||||||
end
|
end
|
||||||
|
20
src/initializeDisturbances.m
Normal file
20
src/initializeDisturbances.m
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
function [disturbances] = initializeDisturbances(args)
|
||||||
|
% initializeDisturbances - Initialize the disturbances
|
||||||
|
%
|
||||||
|
% Syntax: [disturbances] = initializeDisturbances(args)
|
||||||
|
%
|
||||||
|
% Inputs:
|
||||||
|
% - args -
|
||||||
|
|
||||||
|
arguments
|
||||||
|
args.Fd double {mustBeNumeric, mustBeReal} = zeros(6,1)
|
||||||
|
args.Fd_t double {mustBeNumeric, mustBeReal} = 0
|
||||||
|
args.Dw double {mustBeNumeric, mustBeReal} = zeros(6,1)
|
||||||
|
args.Dw_t double {mustBeNumeric, mustBeReal} = 0
|
||||||
|
end
|
||||||
|
|
||||||
|
disturbances = struct();
|
||||||
|
|
||||||
|
disturbances.Dw = timeseries([args.Dw], args.Dw_t);
|
||||||
|
|
||||||
|
disturbances.Fd = timeseries([args.Fd], args.Fd_t);
|
33
src/initializeReferences.m
Normal file
33
src/initializeReferences.m
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
function [references] = initializeReferences(stewart, args)
|
||||||
|
% initializeReferences - Initialize the references
|
||||||
|
%
|
||||||
|
% Syntax: [references] = initializeReferences(args)
|
||||||
|
%
|
||||||
|
% Inputs:
|
||||||
|
% - args -
|
||||||
|
|
||||||
|
arguments
|
||||||
|
stewart
|
||||||
|
args.t double {mustBeNumeric, mustBeReal} = 0
|
||||||
|
args.r double {mustBeNumeric, mustBeReal} = zeros(6, 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
rL = zeros(6, length(args.t));
|
||||||
|
|
||||||
|
for i = 1:length(args.t)
|
||||||
|
R = [cos(args.r(6,i)) -sin(args.r(6,i)) 0;
|
||||||
|
sin(args.r(6,i)) cos(args.r(6,i)) 0;
|
||||||
|
0 0 1] * ...
|
||||||
|
[cos(args.r(5,i)) 0 sin(args.r(5,i));
|
||||||
|
0 1 0;
|
||||||
|
-sin(args.r(5,i)) 0 cos(args.r(5,i))] * ...
|
||||||
|
[1 0 0;
|
||||||
|
0 cos(args.r(4,i)) -sin(args.r(4,i));
|
||||||
|
0 sin(args.r(4,i)) cos(args.r(4,i))];
|
||||||
|
|
||||||
|
[Li, dLi] = inverseKinematics(stewart, 'AP', [args.r(1,i); args.r(2,i); args.r(3,i)], 'ARB', R);
|
||||||
|
rL(:, i) = dLi;
|
||||||
|
end
|
||||||
|
|
||||||
|
references.r = timeseries(args.r, args.t);
|
||||||
|
references.rL = timeseries(rL, args.t);
|
Loading…
Reference in New Issue
Block a user