diff --git a/src/quadarm_task_priority_ctrl.cpp b/src/quadarm_task_priority_ctrl.cpp
index eca4e69deb1c1a1d9fad3bde126ef7c7f2f7af0b..b0d45a9e501030136abce0043cf250f1907284f2 100644
--- a/src/quadarm_task_priority_ctrl.cpp
+++ b/src/quadarm_task_priority_ctrl.cpp
@@ -16,7 +16,7 @@ CQuadarm_Task_Priority_Ctrl::~CQuadarm_Task_Priority_Ctrl()
 }
 
 // Main public function
-void CQuadarm_Task_Priority_Ctrl::quadarm_task_priority_ctrl(const double& quad_height,
+void CQuadarm_Task_Priority_Ctrl::quadarm_task_priority_ctrl(const MatrixXd& quad_dist_obs,
                                                              const goal_obj& goal,
                                                              ht& HT,
                                                              arm& arm,
@@ -27,7 +27,7 @@ void CQuadarm_Task_Priority_Ctrl::quadarm_task_priority_ctrl(const double& quad_
 {
 
   // Current quadrotor height
-  this->quad_height_ = quad_height;
+  this->quad_dist_obs_ = quad_dist_obs;
 
   // Goal related objects
   this->cam_vel_ = goal.cam_vel;
@@ -330,8 +330,7 @@ void CQuadarm_Task_Priority_Ctrl::uam_control(){
 void CQuadarm_Task_Priority_Ctrl::task_infrad(MatrixXd& JIR,MatrixXd& JIR_pseudo,MatrixXd& sigmaIR)
 {
   // Distance to the obstacle (currently detecting only the ground)
-  MatrixXd d_obs = MatrixXd::Zero(3,1);
-  d_obs(2,0) = this->quad_height_;
+  MatrixXd d_obs = this->quad_dist_obs_;
 
   // Inflation radius
   MatrixXd inf_radius = MatrixXd::Zero(1,1);
@@ -339,7 +338,8 @@ void CQuadarm_Task_Priority_Ctrl::task_infrad(MatrixXd& JIR,MatrixXd& JIR_pseudo
 
   // Task vector 
   Eigen::MatrixXd euc_d_obs = (d_obs.transpose()*d_obs).array().sqrt();
-  sigmaIR = inf_radius-euc_d_obs;
+  // sigmaIR = inf_radius-euc_d_obs;
+  sigmaIR = euc_d_obs-inf_radius;
 
   // Task Jacobian
   JIR = MatrixXd::Zero(1,4+this->arm_.nj);
@@ -349,12 +349,19 @@ void CQuadarm_Task_Priority_Ctrl::task_infrad(MatrixXd& JIR,MatrixXd& JIR_pseudo
   // Bloquing matrix
   MatrixXd H = MatrixXd::Zero(4+this->arm_.nj,4+this->arm_.nj);
 
-  for (unsigned int ii = 0; ii < 3; ++ii)
-    if (d_obs(ii,0) < inf_radius(0,0) && d_obs(ii,0) > 0.0)
+  // Euclidean distance to the obstacle
+  // if (sqrt(pow(d_obs(0,0),2)+pow(d_obs(1,0),2)+pow(d_obs(2,0),2))<inf_radius(0,0)) 
+  // {
+    // DOF to block
+    for (unsigned int ii = 0; ii < 3; ++ii)
     {
-      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;
+      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_radius(0,0) << " Obstacle distance: " << d_obs(ii,0) << endl;
+        H(ii,ii) = 1.0;
+      }
     }
+  // }
 
   MatrixXd Hinv = calcPinv(H);
 
diff --git a/src/quadarm_task_priority_ctrl.h b/src/quadarm_task_priority_ctrl.h
index 3454c4df0d17a6fce83be95e02f0ff20d259f45a..fce566c39f417b8b9f6ffb674a42a664188da77d 100644
--- a/src/quadarm_task_priority_ctrl.h
+++ b/src/quadarm_task_priority_ctrl.h
@@ -140,7 +140,7 @@ class CQuadarm_Task_Priority_Ctrl
 
     double target_dist_; // Euclidean distance to target.
 
-    double quad_height_; // Quadrotor ground distance.
+    MatrixXd quad_dist_obs_; // Quadrotor distance to obstacle.
 
     string datetime_; // Initial date and time.
 
@@ -281,7 +281,7 @@ class CQuadarm_Task_Priority_Ctrl
     * Main public function call of Quadarm Task Priority Control.
     *
     */     
-    void quadarm_task_priority_ctrl(const double& quad_height,
+    void quadarm_task_priority_ctrl(const MatrixXd& quad_dist_obs,
                                     const goal_obj& goal,
                                     ht& HT,
                                     arm& arm,