Delete old function to make cubic configurations
This commit is contained in:
		@@ -1,89 +0,0 @@
 | 
			
		||||
function [stewart] = initializeCubicConfiguration(opts_param)
 | 
			
		||||
 | 
			
		||||
opts = struct(...
 | 
			
		||||
    'H_tot', 90,  ... % Total height of the Hexapod [mm]
 | 
			
		||||
    'L',     110, ... % Size of the Cube [mm]
 | 
			
		||||
    'H',     40,  ... % Height between base joints and platform joints [mm]
 | 
			
		||||
    'H0',    75   ... % Height between the corner of the cube and the plane containing the base joints [mm]
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
if exist('opts_param','var')
 | 
			
		||||
    for opt = fieldnames(opts_param)'
 | 
			
		||||
        opts.(opt{1}) = opts_param.(opt{1});
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
points = [0, 0, 0; ...
 | 
			
		||||
          0, 0, 1; ...
 | 
			
		||||
          0, 1, 0; ...
 | 
			
		||||
          0, 1, 1; ...
 | 
			
		||||
          1, 0, 0; ...
 | 
			
		||||
          1, 0, 1; ...
 | 
			
		||||
          1, 1, 0; ...
 | 
			
		||||
          1, 1, 1];
 | 
			
		||||
points = opts.L*points;
 | 
			
		||||
 | 
			
		||||
sx = cross([1, 1, 1], [1 0 0]);
 | 
			
		||||
sx = sx/norm(sx);
 | 
			
		||||
 | 
			
		||||
sy = -cross(sx, [1, 1, 1]);
 | 
			
		||||
sy = sy/norm(sy);
 | 
			
		||||
 | 
			
		||||
sz = [1, 1, 1];
 | 
			
		||||
sz = sz/norm(sz);
 | 
			
		||||
 | 
			
		||||
R = [sx', sy', sz']';
 | 
			
		||||
 | 
			
		||||
cube = zeros(size(points));
 | 
			
		||||
for i = 1:size(points, 1)
 | 
			
		||||
  cube(i, :) = R * points(i, :)';
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
leg_indices = [3, 4; ...
 | 
			
		||||
               2, 4; ...
 | 
			
		||||
               2, 6; ...
 | 
			
		||||
               5, 6; ...
 | 
			
		||||
               5, 7; ...
 | 
			
		||||
               3, 7];
 | 
			
		||||
 | 
			
		||||
legs = zeros(6, 3);
 | 
			
		||||
legs_start = zeros(6, 3);
 | 
			
		||||
 | 
			
		||||
for i = 1:6
 | 
			
		||||
  legs(i, :) = cube(leg_indices(i, 2), :) - cube(leg_indices(i, 1), :);
 | 
			
		||||
  legs_start(i, :) = cube(leg_indices(i, 1), :);
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
Hmax = cube(4, 3) - cube(2, 3);
 | 
			
		||||
if opts.H0 < cube(2, 3)
 | 
			
		||||
  error(sprintf('H0 is not high enought. Minimum H0 = %.1f', cube(2, 3)));
 | 
			
		||||
else if opts.H0 + opts.H > cube(4, 3)
 | 
			
		||||
  error(sprintf('H0+H is too high. Maximum H0+H = %.1f', cube(4, 3)));
 | 
			
		||||
  error('H0+H is too high');
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
Aa = zeros(6, 3);
 | 
			
		||||
for i = 1:6
 | 
			
		||||
  t = (opts.H0-legs_start(i, 3))/(legs(i, 3));
 | 
			
		||||
  Aa(i, :) = legs_start(i, :) + t*legs(i, :);
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
Ab = zeros(6, 3);
 | 
			
		||||
for i = 1:6
 | 
			
		||||
  t = (opts.H0+opts.H-legs_start(i, 3))/(legs(i, 3));
 | 
			
		||||
  Ab(i, :) = legs_start(i, :) + t*legs(i, :);
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
Bb = zeros(6, 3);
 | 
			
		||||
Bb = Ab - (opts.H0 + opts.H_tot/2 + opts.H/2)*[0, 0, 1];
 | 
			
		||||
 | 
			
		||||
h = opts.H0 + opts.H/2 - opts.H_tot/2;
 | 
			
		||||
Aa = Aa - h*[0, 0, 1];
 | 
			
		||||
Ab = Ab - h*[0, 0, 1];
 | 
			
		||||
 | 
			
		||||
stewart = struct();
 | 
			
		||||
  stewart.Aa = Aa;
 | 
			
		||||
  stewart.Ab = Ab;
 | 
			
		||||
  stewart.Bb = Bb;
 | 
			
		||||
  stewart.H_tot = opts.H_tot;
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue
	
	Block a user