diff --git a/src/quadarm_task_priority_ctrl.cpp b/src/quadarm_task_priority_ctrl.cpp
index b029889dc698343c4b4af6c31cadf82fb8d3e334..ee936a5aa260900c10fd4ad28379ea8c73331ac9 100644
--- a/src/quadarm_task_priority_ctrl.cpp
+++ b/src/quadarm_task_priority_ctrl.cpp
@@ -309,58 +309,31 @@ void CQuadarm_Task_Priority_Ctrl::qa_control(){
   this->vel_.quadarm.block(0,0,3,1) = Vtotal.block(0,0,3,1);
   this->vel_.quadarm.block(5,0,1+this->arm_.nj,1) = Vtotal.block(3,0,1+this->arm_.nj,1);
 }
-void CQuadarm_Task_Priority_Ctrl::task_vs(MatrixXd& JVS,MatrixXd& JVS_pseudo,MatrixXd& sigmaVS)
-{
-  // Underactuated Quadrotor 
-  MatrixXd J1(8,4),J2(8,2),Jqa1(6,4+this->arm_.nj),Jqa2(6,2);
-
-  // 9 DOF Extracting wx and wy from quadrotor 
-  Jqa1.block(0,0,6,3) = this->Jqa_.block(0,0,6,3);
-  Jqa1.block(0,3,6,1+this->arm_.nj) = this->Jqa_.block(0,5,6,1+this->arm_.nj);
-  Jqa2 = this->Jqa_.block(0,3,6,2);
-  MatrixXd eye = MatrixXd::Identity(4+this->arm_.nj,4+this->arm_.nj);
-
-  // task jacobian
-  JVS = Jqa1;
-
-  // task jacobian pseudo inverse 
-  //JVS_pseudo = calcPinv(Jqa1);
-  JVS_pseudo = weight_jacvs_inverse(Jqa1);
-
-  // task velocity vector
-  sigmaVS = this->vel_.cam-Jqa2*this->ctrl_params_.v_rollpitch;
-}
 void CQuadarm_Task_Priority_Ctrl::task_infrad(MatrixXd& JIR,MatrixXd& JIR_pseudo,MatrixXd& sigmaIR)
 {
-  // Get diagonal gain matrix
-  MatrixXd Kp=MatrixXd::Zero(3,3);
-  for (unsigned int ii = 0; ii < 3; ++ii)
-    Kp(ii,ii) = 1;
-
-  // Current distance to obstacle (initialize far away)
-  MatrixXd obs_dist = 100*MatrixXd::Ones(3,1);
-  obs_dist(2,0) = this->quad_height_; // ground distance
+  // Distance to the obstacle (currently detecting only the ground)
+  MatrixXd d_obs = MatrixXd::Zero(3,1);
+  d_obs(2,0) = this->quad_height_;
 
   // Inflation radius
-  MatrixXd inf_rad = this->ctrl_params_.inf_radius*MatrixXd::Ones(3,1);
+  MatrixXd inf_radius = MatrixXd::Zero(1,1);
+  inf_radius(0,0) = this->ctrl_params_.inf_radius;
 
-  // Current error 
-  MatrixXd e_infrad = obs_dist - inf_rad;
-  sigmaIR = e_infrad.transpose()*Kp*e_infrad;
+  // Task vector 
+  sigmaIR = d_obs.transpose()*d_obs-inf_radius;
 
   // Task Jacobian
   JIR = MatrixXd::Zero(1,4+this->arm_.nj);
-  MatrixXd Jtemp = Kp*e_infrad;
-  JIR.block(0,0,1,3) = -2*Jtemp.transpose();
-
+  MatrixXd Jtemp = d_obs;
+  JIR.block(0,0,1,3) = 2*Jtemp.transpose();
 
   // Bloquing matrix
   MatrixXd H = MatrixXd::Zero(4+this->arm_.nj,4+this->arm_.nj);
 
   for (unsigned int ii = 0; ii < 3; ++ii)
-    if (e_infrad(ii,0) < 0)
+    if (d_obs(ii,0) < inf_radius(0,0) && d_obs(ii,0) > 0.0)
     {
-      cout << "WARNING!! Inflation Radius violation. DOF: " << ii << " Inf. radius: " << inf_rad(ii,0) << " Obstacle distance: " << obs_dist(ii,0) << endl;
+      cout << "WARNING!! Inflation Radius violation. DOF: " << ii << " Inf. radius: " << inf_radius(0,0) << " Obstacle distance: " << d_obs(ii,0) << endl;
       H(ii,ii) = 1.0;
     }
 
@@ -369,6 +342,35 @@ void CQuadarm_Task_Priority_Ctrl::task_infrad(MatrixXd& JIR,MatrixXd& JIR_pseudo
   // weighting matrix
   MatrixXd temp = JIR*Hinv*JIR.transpose();
   JIR_pseudo = Hinv*JIR.transpose()*calcPinv(temp);
+
+  // cout << "xxxxxx Task velocities xxxxxx" << endl;
+  // cout << JIR_pseudo*sigmaIR << endl;
+  // cout << "______ Task Jacobian _____" << endl;
+  // cout << JIR << endl;
+  // cout << "_______ Pseudo Inverse of Task Jacobian ____" << endl;
+  // cout << JIR_pseudo << endl;
+  // cout << "+++++++++" << endl;
+}
+void CQuadarm_Task_Priority_Ctrl::task_vs(MatrixXd& JVS,MatrixXd& JVS_pseudo,MatrixXd& sigmaVS)
+{
+  // Underactuated Quadrotor 
+  MatrixXd J1(8,4),J2(8,2),Jqa1(6,4+this->arm_.nj),Jqa2(6,2);
+
+  // 9 DOF Extracting wx and wy from quadrotor 
+  Jqa1.block(0,0,6,3) = this->Jqa_.block(0,0,6,3);
+  Jqa1.block(0,3,6,1+this->arm_.nj) = this->Jqa_.block(0,5,6,1+this->arm_.nj);
+  Jqa2 = this->Jqa_.block(0,3,6,2);
+  MatrixXd eye = MatrixXd::Identity(4+this->arm_.nj,4+this->arm_.nj);
+
+  // task jacobian
+  JVS = Jqa1;
+
+  // task jacobian pseudo inverse 
+  //JVS_pseudo = calcPinv(Jqa1);
+  JVS_pseudo = weight_jacvs_inverse(Jqa1);
+
+  // task velocity vector
+  sigmaVS = this->vel_.cam-Jqa2*this->ctrl_params_.v_rollpitch;
 }
 void CQuadarm_Task_Priority_Ctrl::task_cog(MatrixXd& JG,MatrixXd& JG_pseudo,MatrixXd& sigmaG)
 {