function traju = ilqr_control(x0, xf, u, Qf, Q, R, dt, iter, conveg_cond)
    du = u;
    % A partir de la funcion de coste para el sistema linealizado se
    % obtiene el coste inicial
    J_old = ilqr_cost(x0, xf, du, Qf, Q, R, dt);

    for i = 1:iter
        % Se calculan los incrementos de control resolviendo las ecuaciones
        % de riccati      
        [du_new K Kv Ku] = ilqr_iterate(x0, xf, du, Qf, Q, R, dt);	
        du =  du + 0.1 * du_new; % du + 0.10 *       
        % Se vuelve a calcular el coste con para la nueva du
        J = ilqr_cost(x0, xf, du, Qf, Q, R, dt)
        % Se comparan los dos costes si "son iguales" quiere decir que el
        % sistema ha convergido, en caso contrario hasta que terminen las
        % iteraciones
        if(abs(J - J_old) < conveg_cond) 
            break
        end;
        J_old = J;
    end;
    % Se obtienen los incrementos de accion de control para seguir la
    % trayectoria o alcanzar xf
    traju = du;
end
