#+TITLE: Kinematic Study of the Stewart Platform * Functions :PROPERTIES: :HEADER-ARGS:matlab+: :exports code :HEADER-ARGS:matlab+: :comments no :HEADER-ARGS:matlab+: :mkdir yes :HEADER-ARGS:matlab+: :eval no :END: ** getMaxPositions :PROPERTIES: :HEADER-ARGS:matlab+: :tangle src/getMaxPositions.m :END: #+begin_src matlab function [X, Y, Z] = getMaxPositions(stewart) Leg = stewart.Leg; J = stewart.J; theta = linspace(0, 2*pi, 100); phi = linspace(-pi/2 , pi/2, 100); dmax = zeros(length(theta), length(phi)); for i = 1:length(theta) for j = 1:length(phi) L = J*[cos(phi(j))*cos(theta(i)) cos(phi(j))*sin(theta(i)) sin(phi(j)) 0 0 0]'; dmax(i, j) = Leg.stroke/max(abs(L)); end end X = dmax.*cos(repmat(phi,length(theta),1)).*cos(repmat(theta,length(phi),1))'; Y = dmax.*cos(repmat(phi,length(theta),1)).*sin(repmat(theta,length(phi),1))'; Z = dmax.*sin(repmat(phi,length(theta),1)); end #+end_src ** getMaxPureDisplacement :PROPERTIES: :HEADER-ARGS:matlab+: :tangle src/getMaxPureDisplacement.m :END: #+begin_src matlab function [max_disp] = getMaxPureDisplacement(Leg, J) max_disp = zeros(6, 1); max_disp(1) = Leg.stroke/max(abs(J*[1 0 0 0 0 0]')); max_disp(2) = Leg.stroke/max(abs(J*[0 1 0 0 0 0]')); max_disp(3) = Leg.stroke/max(abs(J*[0 0 1 0 0 0]')); max_disp(4) = Leg.stroke/max(abs(J*[0 0 0 1 0 0]')); max_disp(5) = Leg.stroke/max(abs(J*[0 0 0 0 1 0]')); max_disp(6) = Leg.stroke/max(abs(J*[0 0 0 0 0 1]')); end #+end_src