diff --git a/cfg/GroundSegmentation.cfg b/cfg/GroundSegmentation.cfg
index 04606b670178e3aad1df945bc7afb031b52b2723..c9eceaa10be223ce6b6abf9f44cf7a8eab3ecb96 100644
--- a/cfg/GroundSegmentation.cfg
+++ b/cfg/GroundSegmentation.cfg
@@ -80,7 +80,7 @@ gen.add("ground_threshold_in_not_analyzed_areas", double_t, 0, "when it is not p
 
 # Low obstacle detection parameters
 gen.add("low_obstacle_min_height", double_t, 0, "obstacle below this height are not considered", 0.05, 0.001, 0.3);
-gen.add("sensor_vertical_resolution_deg", double_t, 0, "to calculate distances at which low obstacles can be detected", 0.333, 0.01, 10.0);
+gen.add("sensor_best_resolution_deg", double_t, 0, "Either vertical or horizontal, used to calculate distances at which low obstacles can be detected", 0.333, 0.01, 10.0);
 gen.add("max_navigation_slope", double_t, 0, "slopes greater than this threshold will be considered obstacles", 0.2, 0.01, 1.0);
 
 # visualization and debug parameters
diff --git a/kf_based_terrain_analysis b/kf_based_terrain_analysis
index 7c5334ad89b0b8f0677640b66844605d07e1fd00..c955f0f6500e197e3975c3194e9cb73655a70357 160000
--- a/kf_based_terrain_analysis
+++ b/kf_based_terrain_analysis
@@ -1 +1 @@
-Subproject commit 7c5334ad89b0b8f0677640b66844605d07e1fd00
+Subproject commit c955f0f6500e197e3975c3194e9cb73655a70357
diff --git a/params/iri_ground_segmentation.yaml b/params/iri_ground_segmentation.yaml
index 3d4e13fe356b289df566cd30a25be09488cca03a..083bfd61689222c7f0d61fa6068848c73817ad23 100644
--- a/params/iri_ground_segmentation.yaml
+++ b/params/iri_ground_segmentation.yaml
@@ -36,7 +36,7 @@ iri_ground_segmentation: {
                                     ## and a big value will increase the number of false ground points)
 
   # Neural Network related parameters
-  use_neural_network: false,
+  use_neural_network: true,
   extract_data_to_external_training_of_the_network: false,
   dataset_filename_with_global_path: '/home/idelpino/Documentos/dataset.csv', # This is the filename with path where the data for neural net training is dumped
   neural_net_filename_with_global_path: '/home/idelpino/iri-lab/ground_segmentation_ws/src/iri_ground_segmentation/shallow_neural_nets/veg_terrain_and_obs_13_features_39_neurons.csv',
@@ -53,8 +53,8 @@ iri_ground_segmentation: {
                            
   # low obstacle detection parameters
   low_obstacle_min_height: 0.05,
-  sensor_vertical_resolution_deg: 0.333,
-  max_navigation_slope: 0.2,                           
+  sensor_best_resolution_deg: 0.2, # Best resolution, either horizontal or vertical
+  max_navigation_slope: 0.5,                           
                                                          
   # visualization and debug parameters
   measure_performance: false,            ## (feature still not debugged) Flag to measure number of execution and execution times of the different functions of the algorithm 
diff --git a/src/ground_segmentation_alg_node.cpp b/src/ground_segmentation_alg_node.cpp
index 231983975baafefe2b2fe512bbda4fe4bc16a866..748edaa52044972c5430e51a81d7a27fde729a80 100644
--- a/src/ground_segmentation_alg_node.cpp
+++ b/src/ground_segmentation_alg_node.cpp
@@ -236,12 +236,12 @@ GroundSegmentationAlgNode::GroundSegmentationAlgNode(void) :
   else
     this->alg_.filtering_configuration_.low_obstacle_min_height = config_.low_obstacle_min_height;
 
-  if (!this->private_node_handle_.getParam("sensor_vertical_resolution_deg", this->config_.sensor_vertical_resolution_deg))
+  if (!this->private_node_handle_.getParam("sensor_best_resolution_deg", this->config_.sensor_best_resolution_deg))
   {
-    ROS_WARN("GroundSegmentationAlgNode::GroundSegmentationAlgNode: param 'sensor_vertical_resolution_deg' not found");
+    ROS_WARN("GroundSegmentationAlgNode::GroundSegmentationAlgNode: param 'sensor_best_resolution_deg' not found");
   }
   else
-    this->alg_.filtering_configuration_.sensor_vertical_resolution_deg = config_.sensor_vertical_resolution_deg;
+    this->alg_.filtering_configuration_.sensor_best_resolution_deg = config_.sensor_best_resolution_deg;
 
   if (!this->private_node_handle_.getParam("max_navigation_slope", this->config_.max_navigation_slope))
   {
@@ -644,7 +644,7 @@ void GroundSegmentationAlgNode::showPerformanceStatistics(void)
 struct Cell
 {
   float z_min, z_max;
-  int label = -1; // -1 sin inicializar, 0 transitable, 1 obstáculo
+  int label = -1; // -1 uninitialized, 0 traversable, 1 obstacle
 };
 
 void GroundSegmentationAlgNode::detectLowObstacles(float h, float res_deg, float alpha)
@@ -654,14 +654,14 @@ void GroundSegmentationAlgNode::detectLowObstacles(float h, float res_deg, float
   float r_max = h / alpha;
   float K = 1.0 / sin(res);
   float d_max = K * r_max;
-  float cell_side = r_max / sqrt(8.0);
+  float cell_side = r_max / sqrt(8.0); // This comes from here: sqrt((r_max/2)^2 / 2)
   int num_of_cells = (d_max * 2.0 / cell_side);
 
-  std::cout << "r_max = "       << r_max << std::endl;
-  std::cout << "K = "            << K << std::endl;
-  std::cout << "d_max = "        << d_max << std::endl;
-  std::cout << "cell_side = "    << cell_side << std::endl;
-  std::cout << "num_of_cells = " << num_of_cells << std::endl;
+  //std::cout << "r_max = "       << r_max << std::endl;
+  //std::cout << "K = "            << K << std::endl;
+  //std::cout << "d_max = "        << d_max << std::endl;
+  //std::cout << "cell_side = "    << cell_side << std::endl;
+  //std::cout << "num_of_cells = " << num_of_cells << std::endl;
 
   std::vector < std::vector < Cell >> grid(num_of_cells, std::vector < Cell > (num_of_cells));
 
@@ -705,7 +705,7 @@ void GroundSegmentationAlgNode::detectLowObstacles(float h, float res_deg, float
               if (abs(grid[i][j].z_min - grid[nx][ny].z_max) > h || abs(grid[i][j].z_max - grid[nx][ny].z_min) > h)
               {
                 grid[i][j].label = 1;
-                dx = dy = 2; // abortar los bucles
+                dx = dy = 2; // break the loop
               }
             }
           }
@@ -752,7 +752,7 @@ void GroundSegmentationAlgNode::mainNodeThread(void)
                              ground_dense_reconstruction_pcl_cloud_, roadmap_MarkerArray_msg_);
 
     this->detectLowObstacles(this->alg_.filtering_configuration_.low_obstacle_min_height,
-                             this->alg_.filtering_configuration_.sensor_vertical_resolution_deg,
+                             this->alg_.filtering_configuration_.sensor_best_resolution_deg,
                              this->alg_.filtering_configuration_.max_navigation_slope);
 
     //std::cout << "Ground segmentation finished!" << std::endl;
@@ -852,7 +852,7 @@ void GroundSegmentationAlgNode::node_config_update(Config &config, uint32_t leve
 
   // Low obstacles detection parameters
   this->alg_.filtering_configuration_.low_obstacle_min_height = config_.low_obstacle_min_height;
-  this->alg_.filtering_configuration_.sensor_vertical_resolution_deg = config_.sensor_vertical_resolution_deg;
+  this->alg_.filtering_configuration_.sensor_best_resolution_deg = config_.sensor_best_resolution_deg;
   this->alg_.filtering_configuration_.max_navigation_slope = config_.max_navigation_slope;
 
   // visualization and debug parameters