function DM = Sim_Kick(DM, kick)
% keyboard
%--------------------------------------------------------------------------------------
% Inicializaçao de constantes e variaveis
%--------------------------------------------------------------------------------------
 %__ Parametros do robo humanoide -----------------------------------------------------
 DM.pe = DM.pe(DM.fase,:);
 DM.XYZRef=DM.XYZRef(DM.fase,:);
 DM.tetaPe = DM.tetaPe(DM.fase);
 DM.fase = 1;
 L = DM.L;
 pe = ['dir'; 'esq'];
 %__ Aceleraçao da gravidade ----------------------------------------------------------
 go=9.8;
 %__ Outras constantes ---------------------------------------------------------------- 
 DIM = 24;                      %-- Dimensão do vector tempo de simulaçao (Tsim) ------
 SS = 1; DS = 0;                %-- Definiçao das fases de SS e DS --------------------
 RL = 1; LL = 0;                      %-- Perna de referencia -------------------------------

%-----------------------------------------------------------------------------------end

%--------------------------------------------------------------------------------------
% Representação gráfica do robô na configuração inicial: POSIÇAO ZERO 
%--------------------------------------------------------------------------------------
qi = DM.q(DM.fase,1:20); %-- Postura vertical => flexao inicial dos joelhos ----
%-----------------------------------------------------------------------------------end
Ai = CinDir20dof( DM );
def = CoordJuntas( Ai,DM );
P = def.P;

%--------------------------------------------------------------------------------------
% MOVETYPE: "Walking" - movimentos para a realizaçao de 1 passo
%--------------------------------------------------------------------------------------            
  %------------------------------------------------------------------------------------
  % Parametros do pontapé
  %------------------------------------------------------------------------------------        

% MOVETYPE: Chutar -> descriçao da tarefa no espaço das juntas
% Parametros de entrada: 
%                        Hh, altura da anca depende de ang_i, mas devo dobrar joelhos!
%--------------------------------------------------------------------------------------
  ang_iR = pi/8;          
%-- Valores maximos de Hh e D2, para dado ang_iR, com a perna totalmente esticada -----
  Lt    = L(2)+L(3)+L(4)+L(5);  Hh_max = Lt*cos(ang_iR);  D2_max = Lt*sin(ang_iR);
%-- Especificar altura da anca desejada (dobrar joelhos) e elevaçao do pe -------------
  Hh    = 0.95*Hh_max;          Fc     = 0.0375;
  
  
% Partindo da posiçao zero (q = 0):
% 1) Baixar a anca para Hh (i.e., dobrar os joelhos) na vertical
%--------------------------------------------------------------------------------------   
  [q2,q3] = CinInv2R( [Hh/cos(ang_iR)-L(2)-L(5) 0],[L(3) L(4)],[1 -1] );
  qf = [ 0  q2  q3  -q2-q3  0  0  ,  0  0  -q2-q3  q3  q2  0  ,  0 0 0 0 0 0 0 0 ];
%--------------------------------------------------------------------------------------  
% 2) Transferir o CoGx,y para o pe direito: movimento lateral de ang_iR
%--------------------------------------------------------------------------------------  
  qf = [ qf ; ...
         ang_iR  q2  q3  -q2-q3  -ang_iR  0  ,  0  ang_iR  -q2-q3  q3  q2  -ang_iR  ,  0 0 0 0 0 0 0 0 ];
%--------------------------------------------------------------------------------------  
% 3) Elevar o pe esquerdo (Fc em ZZ) ao longo do plano definido pela perna
%--------------------------------------------------------------------------------------  
  [q9,q10] = CinInv2R( [(Hh-Fc)/cos(ang_iR)-L(2)-L(5) 0],[L(4) L(3)],[-1 1] ); q9 = -q9; q10 = -q10;
  qf = [ qf ; ...
         ang_iR  q2  q3  -q2-q3  -ang_iR  0  ,  0  ang_iR  q9  q10  -q9-q10  -ang_iR  ,  0 0 0 0 0 0 0 0 ];
%--------------------------------------------------------------------------------------  
% 4) Puxar o pé atrás atrás
%--------------------------------------------------------------------------------------  
%--------------------------------------------------------------------------------------  
% 5) Chutar
%--------------------------------------------------------------------------------------    
  q10 = qf(end,10) - 2*(qf(end,9)+qf(end,10));  % junta do joelho do pé esquerdo  
  qf = [ qf ; ...
         ang_iR  q2  q3  -q2-q3  -ang_iR  0  ,  0  ang_iR  q9  q10  -q9-q10  -ang_iR  ,  0 0 0 0 0 0 0 0 ];
     
% Normalizar para a saida

  if(DM.pe == 'esq'),
      qf(:,1:12) = fliplr(qf(:,1:12));
  end
  
  DM.q  = [  qi
             qf ];
         
  DM.q(:,end:end+2) = 0;
  DM.pe      = repmat(       DM.pe, size(DM.q,1), 1);
  DM.tetaPe  = repmat(   DM.tetaPe, 1,size(DM.q,1));
  DM.XYZRef  = repmat(   DM.XYZRef, size(DM.q,1), 1);
  DM.fase = 1;

return