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