Update Stewart Platform functions

This commit is contained in:
Thomas Dehaeze 2020-09-01 13:51:25 +02:00
parent de3c8b6ec9
commit 2389e6ba8e
6 changed files with 91 additions and 59 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1051,9 +1051,9 @@ This Matlab function is accessible [[file:../src/initializeJointDynamics.m][here
case 'spherical' case 'spherical'
stewart.joints_F.type = 2; stewart.joints_F.type = 2;
case 'universal_p' case 'universal_p'
stewart.joints_F.type = 3; stewart.joints_F.type = 1;
case 'spherical_p' case 'spherical_p'
stewart.joints_F.type = 4; stewart.joints_F.type = 2;
case 'universal_3dof' case 'universal_3dof'
stewart.joints_F.type = 5; stewart.joints_F.type = 5;
end end
@ -1064,38 +1064,56 @@ This Matlab function is accessible [[file:../src/initializeJointDynamics.m][here
case 'spherical' case 'spherical'
stewart.joints_M.type = 2; stewart.joints_M.type = 2;
case 'universal_p' case 'universal_p'
stewart.joints_M.type = 3; stewart.joints_M.type = 1;
case 'spherical_p' case 'spherical_p'
stewart.joints_M.type = 4; stewart.joints_M.type = 2;
case 'spherical_3dof' case 'spherical_3dof'
stewart.joints_M.type = 6; stewart.joints_M.type = 6;
end end
#+end_src #+end_src
** Initialize Stiffness
#+begin_src matlab
stewart.joints_M.Kx = zeros(6,1);
stewart.joints_M.Ky = zeros(6,1);
stewart.joints_M.Kz = zeros(6,1);
stewart.joints_F.Kx = zeros(6,1);
stewart.joints_F.Ky = zeros(6,1);
stewart.joints_F.Kz = zeros(6,1);
stewart.joints_M.Kf = zeros(6,1);
stewart.joints_M.Kt = zeros(6,1);
stewart.joints_F.Kf = zeros(6,1);
stewart.joints_F.Kt = zeros(6,1);
stewart.joints_M.Cx = zeros(6,1);
stewart.joints_M.Cy = zeros(6,1);
stewart.joints_M.Cz = zeros(6,1);
stewart.joints_F.Cx = zeros(6,1);
stewart.joints_F.Cy = zeros(6,1);
stewart.joints_F.Cz = zeros(6,1);
stewart.joints_M.Cf = zeros(6,1);
stewart.joints_M.Ct = zeros(6,1);
stewart.joints_F.Cf = zeros(6,1);
stewart.joints_F.Ct = zeros(6,1);
#+end_src
** Add Stiffness and Damping in Translation of each strut ** Add Stiffness and Damping in Translation of each strut
:PROPERTIES: :PROPERTIES:
:UNNUMBERED: t :UNNUMBERED: t
:END: :END:
Translation Stiffness Translation Stiffness
#+begin_src matlab #+begin_src matlab
stewart.joints_M.Kx = zeros(6,1); if ~strcmp(args.type_M, 'universal_p') || ~strcmp(args.type_M, 'spherical_p')
stewart.joints_M.Ky = zeros(6,1); stewart.joints_M.Kz = args.Kz_M;
stewart.joints_M.Kz = args.Kz_M; stewart.joints_M.Cz = args.Cz_M;
end
stewart.joints_F.Kx = zeros(6,1); if ~strcmp(args.type_F, 'universal_p') || ~strcmp(args.type_F, 'spherical_p')
stewart.joints_F.Ky = zeros(6,1); stewart.joints_F.Kz = args.Kz_F;
stewart.joints_F.Kz = args.Kz_F; stewart.joints_F.Cz = args.Cz_F;
#+end_src end
Translation Damping
#+begin_src matlab
stewart.joints_M.Cx = zeros(6,1);
stewart.joints_M.Cy = zeros(6,1);
stewart.joints_M.Cz = args.Cz_M;
stewart.joints_F.Cx = zeros(6,1);
stewart.joints_F.Cy = zeros(6,1);
stewart.joints_F.Cz = args.Cz_F;
#+end_src #+end_src
** Add Stiffness and Damping in Rotation of each strut ** Add Stiffness and Damping in Rotation of each strut
@ -1104,21 +1122,21 @@ Translation Damping
:END: :END:
Rotational Stiffness Rotational Stiffness
#+begin_src matlab #+begin_src matlab
stewart.joints_M.Kf = args.Kf_M; if ~strcmp(args.type_M, 'universal_p') || ~strcmp(args.type_M, 'spherical_p')
stewart.joints_M.Kt = args.Kf_M; stewart.joints_M.Kf = args.Kf_M;
stewart.joints_M.Cf = args.Cf_M;
stewart.joints_F.Kf = args.Kf_F; stewart.joints_M.Kt = args.Kt_M;
stewart.joints_F.Kt = args.Kf_F; stewart.joints_M.Ct = args.Ct_M;
#+end_src end
if ~strcmp(args.type_F, 'universal_p') || ~strcmp(args.type_F, 'spherical_p')
stewart.joints_F.Kf = args.Kf_F;
stewart.joints_F.Cf = args.Cf_F;
Rotational Damping stewart.joints_F.Kt = args.Kt_F;
#+begin_src matlab stewart.joints_F.Ct = args.Ct_F;
stewart.joints_M.Cf = args.Cf_M; end
stewart.joints_M.Ct = args.Cf_M;
stewart.joints_F.Cf = args.Cf_F;
stewart.joints_F.Ct = args.Cf_F;
#+end_src #+end_src
* =initializeInertialSensor=: Initialize the inertial sensor in each strut * =initializeInertialSensor=: Initialize the inertial sensor in each strut

View File

@ -46,10 +46,6 @@ switch stewart.joints_F.type
fprintf('- The joints on the fixed based are universal joints\n') fprintf('- The joints on the fixed based are universal joints\n')
case 2 case 2
fprintf('- The joints on the fixed based are spherical joints\n') fprintf('- The joints on the fixed based are spherical joints\n')
case 3
fprintf('- The joints on the fixed based are perfect universal joints\n')
case 4
fprintf('- The joints on the fixed based are perfect spherical joints\n')
end end
switch stewart.joints_M.type switch stewart.joints_M.type
@ -57,10 +53,6 @@ switch stewart.joints_M.type
fprintf('- The joints on the mobile based are universal joints\n') fprintf('- The joints on the mobile based are universal joints\n')
case 2 case 2
fprintf('- The joints on the mobile based are spherical joints\n') fprintf('- The joints on the mobile based are spherical joints\n')
case 3
fprintf('- The joints on the mobile based are perfect universal joints\n')
case 4
fprintf('- The joints on the mobile based are perfect spherical joints\n')
end end
fprintf('- The position of the joints on the fixed based with respect to {F} are (in [mm]):\n') fprintf('- The position of the joints on the fixed based with respect to {F} are (in [mm]):\n')

View File

@ -55,9 +55,9 @@ switch args.type_F
case 'spherical' case 'spherical'
stewart.joints_F.type = 2; stewart.joints_F.type = 2;
case 'universal_p' case 'universal_p'
stewart.joints_F.type = 3; stewart.joints_F.type = 1;
case 'spherical_p' case 'spherical_p'
stewart.joints_F.type = 4; stewart.joints_F.type = 2;
case 'universal_3dof' case 'universal_3dof'
stewart.joints_F.type = 5; stewart.joints_F.type = 5;
end end
@ -68,37 +68,59 @@ switch args.type_M
case 'spherical' case 'spherical'
stewart.joints_M.type = 2; stewart.joints_M.type = 2;
case 'universal_p' case 'universal_p'
stewart.joints_M.type = 3; stewart.joints_M.type = 1;
case 'spherical_p' case 'spherical_p'
stewart.joints_M.type = 4; stewart.joints_M.type = 2;
case 'spherical_3dof' case 'spherical_3dof'
stewart.joints_M.type = 6; stewart.joints_M.type = 6;
end end
stewart.joints_M.Kx = zeros(6,1); stewart.joints_M.Kx = zeros(6,1);
stewart.joints_M.Ky = zeros(6,1); stewart.joints_M.Ky = zeros(6,1);
stewart.joints_M.Kz = args.Kz_M; stewart.joints_M.Kz = zeros(6,1);
stewart.joints_F.Kx = zeros(6,1); stewart.joints_F.Kx = zeros(6,1);
stewart.joints_F.Ky = zeros(6,1); stewart.joints_F.Ky = zeros(6,1);
stewart.joints_F.Kz = args.Kz_F; stewart.joints_F.Kz = zeros(6,1);
stewart.joints_M.Kf = zeros(6,1);
stewart.joints_M.Kt = zeros(6,1);
stewart.joints_F.Kf = zeros(6,1);
stewart.joints_F.Kt = zeros(6,1);
stewart.joints_M.Cx = zeros(6,1); stewart.joints_M.Cx = zeros(6,1);
stewart.joints_M.Cy = zeros(6,1); stewart.joints_M.Cy = zeros(6,1);
stewart.joints_M.Cz = args.Cz_M; stewart.joints_M.Cz = zeros(6,1);
stewart.joints_F.Cx = zeros(6,1); stewart.joints_F.Cx = zeros(6,1);
stewart.joints_F.Cy = zeros(6,1); stewart.joints_F.Cy = zeros(6,1);
stewart.joints_F.Cz = args.Cz_F; stewart.joints_F.Cz = zeros(6,1);
stewart.joints_M.Kf = args.Kf_M; stewart.joints_M.Cf = zeros(6,1);
stewart.joints_M.Kt = args.Kf_M; stewart.joints_M.Ct = zeros(6,1);
stewart.joints_F.Cf = zeros(6,1);
stewart.joints_F.Ct = zeros(6,1);
stewart.joints_F.Kf = args.Kf_F; if ~strcmp(args.type_M, 'universal_p') || ~strcmp(args.type_M, 'spherical_p')
stewart.joints_F.Kt = args.Kf_F; stewart.joints_M.Kz = args.Kz_M;
stewart.joints_M.Cz = args.Cz_M;
end
stewart.joints_M.Cf = args.Cf_M; if ~strcmp(args.type_F, 'universal_p') || ~strcmp(args.type_F, 'spherical_p')
stewart.joints_M.Ct = args.Cf_M; stewart.joints_F.Kz = args.Kz_F;
stewart.joints_F.Cz = args.Cz_F;
end
stewart.joints_F.Cf = args.Cf_F; if ~strcmp(args.type_M, 'universal_p') || ~strcmp(args.type_M, 'spherical_p')
stewart.joints_F.Ct = args.Cf_F; stewart.joints_M.Kf = args.Kf_M;
stewart.joints_M.Cf = args.Cf_M;
stewart.joints_M.Kt = args.Kt_M;
stewart.joints_M.Ct = args.Ct_M;
end
if ~strcmp(args.type_F, 'universal_p') || ~strcmp(args.type_F, 'spherical_p')
stewart.joints_F.Kf = args.Kf_F;
stewart.joints_F.Cf = args.Cf_F;
stewart.joints_F.Kt = args.Kt_F;
stewart.joints_F.Ct = args.Ct_F;
end