function recycle(H,speed,correct_flag)

% Definição das home positions
calib=[ 0  0 -70;
        0  0  70;
        0  0   0;
        0  0   0];
% Limitação das home positions
for i=1:size(calib,1)
    calib(i,:)=limit(i,calib(i,:));
end
    
% Validação dos argumentos
if (H==0)
    error('recycle fcn:invalid arg','Argumentos inválidos!');
end

% Correção dos argumentos
if (speed<0),       speed=0;
elseif (speed>255)  speed=255; end

for scuid=1:size(calib,1)

    % Desactivação dos controladores
%     for i=3:-1:0
%         [rx,err,errstr,t]=applycontrol(H,scuid,i,[0 0 0]);
%     end

    % Determinação da home position
    position=calib(scuid,:);
    if (correct_flag~=0), position=correct(scuid,position); end

    % Movimentação para as homepositions
    [rx,err,errstr,t]=applyjoint(H,scuid,1,[speed speed speed]);
    [rx,err,errstr,t]=applyjoint(H,scuid,0,position);
end