diff --git a/config/default_outlier_removal_config.yaml b/config/default_outlier_removal_config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2ff09bbb0314621e5ba3ce0788d65a350e09e390
--- /dev/null
+++ b/config/default_outlier_removal_config.yaml
@@ -0,0 +1,4 @@
+mean_k: 20
+stddev: 2.0
+negative: False
+
diff --git a/config/default_passthrough_config.yaml b/config/default_passthrough_config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a81499adbfd4665627117336afef6bba46c13a5c
--- /dev/null
+++ b/config/default_passthrough_config.yaml
@@ -0,0 +1,4 @@
+filter_field_name: x
+filter_limit_min: 1.1
+filter_limit_max: 2.2
+filter_limit_negative: False
diff --git a/config/default_radius_outlier_removal_config.yaml b/config/default_radius_outlier_removal_config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..23952938277fae7cc9492e32647da98c9ecba5d4
--- /dev/null
+++ b/config/default_radius_outlier_removal_config.yaml
@@ -0,0 +1,3 @@
+radius_search: 0.1
+min_neighbors: 15
+
diff --git a/config/default_voxels_config.yaml b/config/default_voxels_config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0c335082b5364ba9d4b67ea7ace488b13481d116
--- /dev/null
+++ b/config/default_voxels_config.yaml
@@ -0,0 +1,5 @@
+leaf_size: 0.03
+filter_field_name: z
+filter_limit_min: -0.5
+filter_limit_max: 3.0
+filter_limit_negative: False
diff --git a/launch/include/3d_nav_camera.launch b/launch/include/3d_nav_camera.launch
index 6e6b6dd6912a8eeeb09766c0705f96861d31423c..b117dd54a605e1435886fc92102337179bc996ad 100644
--- a/launch/include/3d_nav_camera.launch
+++ b/launch/include/3d_nav_camera.launch
@@ -2,63 +2,73 @@
 <!-- -->
 <launch>
   
-  <arg name="ns" default="ana" />
-  <arg name="output" default="log"/>
-  <arg name="launch_prefix" default=""/>
-  <arg name="use_nodelets" default="true"/>
+  <arg name="ns"                                 default="ana" />
+  <arg name="camera_name"                        default="camera" />
+  <arg name="output"                             default="log"/>
+  <arg name="launch_prefix"                      default=""/>
+  <arg name="use_nodelets"                       default="true"/>
 
-  <arg name="obstacle_nodelet_manager" default="obstacle_nodelet_manager" />
-  <arg name="hole_nodelet_manager" default="hole_nodelet_manager" />
+  <arg name="obstacle_nodelet_manager"           default="obstacle_nodelet_manager" />
+  <arg name="hole_nodelet_manager"               default="hole_nodelet_manager" />
 
-  <arg name="camera_cloud_in" default="sensors/nav_cam/depth_registered/points"/>
-  <arg name="average_node_name" default="average_point_cloud"/>
-  <arg name="average_config_file" default="$(find iri_average_point_cloud)/config/default_config.yaml"/>
+  <arg name="camera_cloud_in"                    default="sensors/nav_cam/depth_registered/points"/>
 
-  <arg name="normals_node_name" default="obstacle_detection_normals"/>
-  <arg name="normals_config_file" default="$(find iri_obstacle_detection_normals)/config/default_config.yaml"/>
+  <arg name="average_config_file"                default="$(find iri_average_point_cloud)/config/default_config.yaml"/>
 
-  <arg name="near_hole_detection_node_name" default="near_hole_detection"/>
-  <arg name="near_hole_detection_config_file" default="$(find iri_point_cloud_hole_detection)/config/near_config.yaml"/>
-  <arg name="hole_detection_cloud_in" default="radius_outlier_removal/output"/>
+  <arg name="voxels_config_file"                 default="$(find iri_rosnav)/config/default_voxels_config.yaml"/>
 
-  <arg name="far_hole_detection_node_name" default="far_hole_detection"/>
-  <arg name="far_hole_detection_config_file" default="$(find iri_point_cloud_hole_detection)/config/far_config.yaml"/>
+  <arg name="passthrough_config_file"            default="$(find iri_rosnav)/config/default_passthrough_config.yaml"/>
+
+  <arg name="outlier_removal_config_file"        default="$(find iri_rosnav)/config/default_outlier_removal_config.yaml"/>
+
+  <arg name="radius_outlier_removal_config_file" default="$(find iri_rosnav)/config/default_radius_outlier_removal_config.yaml"/>
+
+  <arg name="normals_config_file"                default="$(find iri_obstacle_detection_normals)/config/default_config.yaml"/>
+
+  <arg name="near_hole_detection_config_file"    default="$(find iri_point_cloud_hole_detection)/config/near_config.yaml"/>
+  <arg name="hole_detection_cloud_in"            default="radius_outlier_removal/output"/>
+
+  <arg name="far_hole_detection_config_file"     default="$(find iri_point_cloud_hole_detection)/config/far_config.yaml"/>
+  
+  <arg name="base_frame_id"                      default="$(arg ns)/base_footprint"/>
 
   <group if="$(arg use_nodelets)">
     <include file="$(find iri_rosnav)/launch/include/camera_nodelets.launch">
-      <arg name="ns" value="$(arg ns)"/>
-      <arg name="obstacle_nodelet_manager" value="$(arg obstacle_nodelet_manager)" />
-      <arg name="hole_nodelet_manager" value="$(arg hole_nodelet_manager)" />
-      <arg name="camera_cloud_in" value="$(arg camera_cloud_in)"/>
-      <arg name="average_node_name" value="$(arg average_node_name)"/>
-      <arg name="average_config_file" value="$(arg average_config_file)"/>
-      <arg name="normals_node_name" value="$(arg normals_node_name)"/>
-      <arg name="normals_config_file" value="$(arg normals_config_file)"/>
-      <arg name="near_hole_detection_node_name" value="$(arg near_hole_detection_node_name)"/>
-      <arg name="near_hole_detection_config_file" value="$(arg near_hole_detection_config_file)"/>
-      <arg name="hole_detection_cloud_in" value="$(arg hole_detection_cloud_in)"/>
-      <arg name="far_hole_detection_node_name" value="$(arg far_hole_detection_node_name)"/>
-      <arg name="far_hole_detection_config_file" value="$(arg far_hole_detection_config_file)"/>
-      <arg name="output" value="$(arg output)"/>
-      <arg name="launch_prefix" value="$(arg launch_prefix)"/>
+      <arg name="ns"                                 value="$(arg ns)"/>
+      <arg name="camera_name"                        value="$(arg camera_name)"/>
+      <arg name="obstacle_nodelet_manager"           value="$(arg obstacle_nodelet_manager)" />
+      <arg name="hole_nodelet_manager"               value="$(arg hole_nodelet_manager)" />
+      <arg name="camera_cloud_in"                    value="$(arg camera_cloud_in)"/>
+      <arg name="average_config_file"                value="$(arg average_config_file)"/>
+      <arg name="voxels_config_file"                 value="$(arg voxels_config_file)"/>
+      <arg name="passthrough_config_file"            value="$(arg passthrough_config_file)"/>
+      <arg name="outlier_removal_config_file"        value="$(arg outlier_removal_config_file)"/>
+      <arg name="radius_outlier_removal_config_file" value="$(arg radius_outlier_removal_config_file)"/>
+      <arg name="normals_config_file"                value="$(arg normals_config_file)"/>
+      <arg name="near_hole_detection_config_file"    value="$(arg near_hole_detection_config_file)"/>
+      <arg name="far_hole_detection_config_file"     value="$(arg far_hole_detection_config_file)"/>
+      <arg name="base_frame_id"                      value="$(arg base_frame_id)"/>
+      <arg name="output"                             value="$(arg output)"/>
+      <arg name="launch_prefix"                      value="$(arg launch_prefix)"/>
     </include>
   </group>
 
   <group unless="$(arg use_nodelets)">
-    <include file="$(find iri_rosnav)/launch/include/camera_nodelets.launch">
-      <arg name="ns" value="$(arg ns)"/>
-      <arg name="camera_cloud_in" value="$(arg camera_cloud_in)"/>
-      <arg name="average_node_name" value="$(arg average_node_name)"/>
-      <arg name="average_config_file" value="$(arg average_config_file)"/>
-      <arg name="normals_node_name" value="$(arg normals_node_name)"/>
-      <arg name="normals_config_file" value="$(arg normals_config_file)"/>
-      <arg name="near_hole_detection_node_name" value="$(arg near_hole_detection_node_name)"/>
-      <arg name="near_hole_detection_config_file" value="$(arg near_hole_detection_config_file)"/>
-      <arg name="hole_detection_cloud_in" value="$(arg hole_detection_cloud_in)"/>
-      <arg name="far_hole_detection_node_name" value="$(arg far_hole_detection_node_name)"/>
-      <arg name="far_hole_detection_config_file" value="$(arg far_hole_detection_config_file)"/>
-      <arg name="output" value="$(arg output)"/>
-      <arg name="launch_prefix" value="$(arg launch_prefix)"/>
+    <include file="$(find iri_rosnav)/launch/include/camera_nodes.launch">
+      <arg name="ns"                                 value="$(arg ns)"/>
+      <arg name="camera_name"                        value="$(arg camera_name)"/>
+      <arg name="camera_cloud_in"                    value="$(arg camera_cloud_in)"/>
+      <arg name="average_config_file"                value="$(arg average_config_file)"/>
+      <arg name="voxels_config_file"                 value="$(arg voxels_config_file)"/>
+      <arg name="passthrough_config_file"            value="$(arg passthrough_config_file)"/>
+      <arg name="outlier_removal_config_file"        value="$(arg outlier_removal_config_file)"/>
+      <arg name="radius_outlier_removal_config_file" value="$(arg radius_outlier_removal_config_file)"/>
+      <arg name="normals_config_file"                value="$(arg normals_config_file)"/>
+      <arg name="near_hole_detection_config_file"    value="$(arg near_hole_detection_config_file)"/>
+      <arg name="far_hole_detection_config_file"     value="$(arg far_hole_detection_config_file)"/>
+      <arg name="base_frame_id"                      value="$(arg base_frame_id)"/>
+      <arg name="output"                             value="$(arg output)"/>
+      <arg name="launch_prefix"                      value="$(arg launch_prefix)"/>
     </include>
   </group>
 </launch>
diff --git a/launch/include/3d_nav_lidar.launch b/launch/include/3d_nav_lidar.launch
index 742cb510d5ff10b78bf8fe44fa08b9985eca95d7..40fcabb2b1eea182705522da5e5ba6ab7cca56a9 100644
--- a/launch/include/3d_nav_lidar.launch
+++ b/launch/include/3d_nav_lidar.launch
@@ -2,43 +2,40 @@
 <!-- -->
 <launch>
   
-  <arg name="ns" default="ana" />
-  <arg name="output" default="log"/>
-  <arg name="launch_prefix" default=""/>
-  <arg name="use_nodelets" default="true"/>
+  <arg name="ns"             default="ana" />
+  <arg name="lidar_name"     default="lidar" />
+  <arg name="output"         default="log"/>
+  <arg name="launch_prefix"  default=""/>
+  <arg name="use_nodelets"   default="true"/>
 
   <arg name="lidar_nodelet_manager" default="lidar_nodelet_manager"/>
 
-  <arg name="lidar_filter_node_name" default="lidar_filter"/>
   <arg name="lidar_filter_config_file" default="$(find iri_point_cloud_angle_filter)/config/default_config.yaml"/>
-  <arg name="lidar_filter_cloud_in" default="/$(arg ns)/sensors/velodyne_points" />
+  <arg name="lidar_filter_cloud_in"    default="/$(arg ns)/sensors/velodyne_points" />
 
-  <arg name="lidar_detector_node_name" default="lidar_detector"/>
   <arg name="lidar_detector_config_file" default="$(find iri_lidar_obstacle_detector)/config/default_config.yaml"/>
 
   <group if="$(arg use_nodelets)">
     <include file="$(find iri_rosnav)/launch/include/lidar_nodelets.launch">
-      <arg name="ns" value="$(arg ns)"/>
-      <arg name="output" value="$(arg output)"/>
-      <arg name="launch_prefix" value="$(arg launch_prefix)"/>
-      <arg name="lidar_nodelet_manager" value="$(arg lidar_nodelet_manager)"/>
-      <arg name="lidar_filter_node_name" value="$(arg lidar_filter_node_name)"/>
-      <arg name="lidar_filter_config_file" value="$(arg lidar_filter_config_file)"/>
-      <arg name="lidar_filter_cloud_in" value="$(arg lidar_filter_cloud_in)" />
-      <arg name="lidar_detector_node_name" value="$(arg lidar_detector_node_name)"/>
+      <arg name="ns"                         value="$(arg ns)"/>
+      <arg name="lidar_name"                 value="$(arg lidar_name)"/>
+      <arg name="output"                     value="$(arg output)"/>
+      <arg name="launch_prefix"              value="$(arg launch_prefix)"/>
+      <arg name="lidar_nodelet_manager"      value="$(arg lidar_nodelet_manager)"/>
+      <arg name="lidar_filter_config_file"   value="$(arg lidar_filter_config_file)"/>
+      <arg name="lidar_filter_cloud_in"      value="$(arg lidar_filter_cloud_in)" />
       <arg name="lidar_detector_config_file" value="$(arg lidar_detector_config_file)"/>
     </include>
   </group>
 
   <group unless="$(arg use_nodelets)">
     <include file="$(find iri_rosnav)/launch/include/lidar_nodes.launch">
-      <arg name="ns" value="$(arg ns)"/>
-      <arg name="output" value="$(arg output)"/>
-      <arg name="launch_prefix" value="$(arg launch_prefix)"/>
-      <arg name="lidar_filter_node_name" value="$(arg lidar_filter_node_name)"/>
-      <arg name="lidar_filter_config_file" value="$(arg lidar_filter_config_file)"/>
-      <arg name="lidar_filter_cloud_in" value="$(arg lidar_filter_cloud_in)" />
-      <arg name="lidar_detector_node_name" value="$(arg lidar_detector_node_name)"/>
+      <arg name="ns"                         value="$(arg ns)"/>
+      <arg name="lidar_name"                 value="$(arg lidar_name)"/>
+      <arg name="output"                     value="$(arg output)"/>
+      <arg name="launch_prefix"              value="$(arg launch_prefix)"/>
+      <arg name="lidar_filter_config_file"   value="$(arg lidar_filter_config_file)"/>
+      <arg name="lidar_filter_cloud_in"      value="$(arg lidar_filter_cloud_in)" />
       <arg name="lidar_detector_config_file" value="$(arg lidar_detector_config_file)"/>
     </include>
   </group>
diff --git a/launch/include/camera_nodelets.launch b/launch/include/camera_nodelets.launch
index ab5c44eac1399d0a81c76f9fa7660cd49c109b83..e44198452b9fe6210e5e4308d681ffa7e40083f3 100644
--- a/launch/include/camera_nodelets.launch
+++ b/launch/include/camera_nodelets.launch
@@ -2,30 +2,38 @@
 
 <launch>
 
-  <arg name="ns" default="ana"/>
+  <arg name="ns"                              default="robot"/>
+  <arg name="camera_name"                     default="camera"/>
+  <arg name="ns2"                             default="nav3d/$(arg camera_name)"/>
+  <arg name="ns_nav3d"                        default="$(arg ns)/$(arg ns2)"/>
 
-  <arg name="obstacle_nodelet_manager" default="obstacle_nodelet_manager" />
-  <arg name="hole_nodelet_manager" default="hole_nodelet_manager" />
-  <arg name="camera_cloud_in" default="sensors/nav_cam/depth_registered/points"/>
+  <arg name="obstacle_nodelet_manager"        default="obstacle_nodelet_manager" />
+  <arg name="hole_nodelet_manager"            default="hole_nodelet_manager" />
+  <arg name="camera_cloud_in"                 default="sensors/nav_cam/depth_registered/points"/>
 
-  <arg name="average_node_name" default="average_point_cloud"/>
-  <arg name="average_config_file" default="$(find iri_average_point_cloud)/config/default_config.yaml"/>
+  <arg name="average_config_file"             default="$(find iri_average_point_cloud)/config/default_config.yaml"/>
 
-  <arg name="normals_node_name" default="obstacle_detection_normals"/>
-  <arg name="normals_config_file" default="$(find iri_obstacle_detection_normals)/config/default_config.yaml"/>
+  <arg name="voxels_config_file"              default="$(find iri_rosnav)/config/default_voxels_config.yaml"/>
+
+  <arg name="passthrough_config_file"            default="$(find iri_rosnav)/config/default_passthrough_config.yaml"/>
+
+  <arg name="outlier_removal_config_file"        default="$(find iri_rosnav)/config/default_outlier_removal_config.yaml"/>
+
+  <arg name="radius_outlier_removal_config_file" default="$(find iri_rosnav)/config/default_radius_outlier_removal_config.yaml"/>
+
+  <arg name="normals_config_file"             default="$(find iri_obstacle_detection_normals)/config/default_config.yaml"/>
 
-  <arg name="near_hole_detection_node_name" default="near_hole_detection"/>
   <arg name="near_hole_detection_config_file" default="$(find iri_point_cloud_hole_detection)/config/near_config.yaml"/>
-  <arg name="hole_detection_cloud_in" default="radius_outlier_removal/output"/>
 
-  <arg name="far_hole_detection_node_name" default="far_hole_detection"/>
-  <arg name="far_hole_detection_config_file" default="$(find iri_point_cloud_hole_detection)/config/far_config.yaml"/>
+  <arg name="far_hole_detection_config_file"  default="$(find iri_point_cloud_hole_detection)/config/far_config.yaml"/>
+  
+  <arg name="base_frame_id"                   default="$(arg ns)/base_footprint"/>
 
-  <arg name="output" default="screen"/>
-  <arg name="launch_prefix" default=""/>
+  <arg name="output"                          default="screen"/>
+  <arg name="launch_prefix"                   default=""/>
 
 <!-- *******************  OBSTACLE DETECTION  **********************************  -->
-  <group ns="$(arg ns)">
+  <group ns="$(arg ns_nav3d)">
 
     <!-- Obstacle nodelets manager -->
     <node name="$(arg obstacle_nodelet_manager)"
@@ -36,98 +44,87 @@
 
     <node pkg="nodelet" 
           type="nodelet"
-          name="pc_throttle" args="load iri_average_point_cloud/NodeletThrottlePC $(arg obstacle_nodelet_manager)" output="$(arg output)">
-        <remap from="topic_in"  to="$(arg camera_cloud_in)"/>
-        <remap from="topic_out" to="$(arg camera_cloud_in)_throttle"/>
+          name="$(arg camera_name)_throttle" args="load iri_average_point_cloud/NodeletThrottlePC $(arg obstacle_nodelet_manager)" output="$(arg output)">
+        <remap from="topic_in"  to="/$(arg camera_cloud_in)"/>
+        <remap from="topic_out" to="/$(arg ns_nav3d)/throttle"/>
         <param name="update_rate" value="15"/>
     </node>
   </group>
 
   <include file="$(find iri_average_point_cloud)/launch/nodelet.launch">
-    <arg name="ns" value="$(arg ns)"/>
-    <arg name="node_name" value="$(arg average_node_name)"/>
+    <arg name="ns"                     value="$(arg ns_nav3d)"/>
+    <arg name="node_name"              value="$(arg camera_name)_average"/>
     <arg name="camera_nodelet_manager" value="$(arg obstacle_nodelet_manager)"/>
-    <arg name="config_file" value="$(arg average_config_file)"/>
-    <arg name="output" value="$(arg output)"/>
-    <arg name="launch_prefix" value="$(arg launch_prefix)"/>
-    <arg name="cloud_in" value="$(arg camera_cloud_in)_throttle"/>
+    <arg name="config_file"            value="$(arg average_config_file)"/>
+    <arg name="cloud_in"               value="/$(arg ns_nav3d)/throttle"/>
+    <arg name="cloud_out"              value="/$(arg ns_nav3d)/average"/>
+    <arg name="output"                 value="$(arg output)"/>
+    <arg name="launch_prefix"          value="$(arg launch_prefix)"/>
   </include>
 
-  <group ns="$(arg ns)">
+  <group ns="$(arg ns_nav3d)">
     <!-- Downsampling points  -->
-    <node name="voxel_grid_obs"
+    <node name="$(arg camera_name)_voxel_grid_obs"
       pkg="nodelet"
       type="nodelet"
       args="load pcl/VoxelGrid $(arg obstacle_nodelet_manager)"
       output="$(arg output)">
-      <remap from="~input" to="average_point_cloud/output" />
-      <param name="input_frame" value="$(arg ns)/base_footprint"/>
-      <param name="output_frame" value="$(arg ns)/base_footprint"/>
-      <rosparam>  
-        leaf_size: 0.03
-        filter_field_name: z
-        filter_limit_min: -0.5
-        filter_limit_max: 5.0
-        filter_limit_negative: False
-      </rosparam>
+      <remap from="~input" to="/$(arg ns_nav3d)/average" />
+      <remap from="~output" to="/$(arg ns_nav3d)/voxels" />
+      <param name="input_frame"  value="$(arg base_frame_id)"/>
+      <param name="output_frame" value="$(arg base_frame_id)"/>
+      <rosparam file="$(arg voxels_config_file)" command="load"/>  
     </node>
 
     <!-- Run a passthrough filter  -->
-    <node name="passthrough"
+    <node name="$(arg camera_name)_passthrough"
       pkg="nodelet" 
       type="nodelet"  
       args="load pcl/PassThrough $(arg obstacle_nodelet_manager)" 
       output="$(arg output)">
-      <remap from="~input" to="voxel_grid_obs/output" />
-      <rosparam>
-        filter_field_name: x
-        filter_limit_min: 0.01
-        filter_limit_max: 1.5
-        filter_limit_negative: False
-      </rosparam>
+      <remap from="~input" to="/$(arg ns_nav3d)/voxels" />
+      <remap from="~output" to="/$(arg ns_nav3d)/passthrough" />      
+      <rosparam file="$(arg passthrough_config_file)" command="load"/>  
     </node>
 
     <!-- Statistical outlier removal  -->
-    <node name="outlier_removal" 
+    <node name="$(arg camera_name)_outlier_removal" 
       pkg="nodelet"
       type="nodelet"
       args="load pcl/StatisticalOutlierRemoval $(arg obstacle_nodelet_manager)"
       output="$(arg output)" >
-      <remap from="~input" to="passthrough/output" />
-      <rosparam>
-        mean_k: 20
-        stddev: 2.0
-        negative: False 
-      </rosparam>
+      <remap from="~input" to="/$(arg ns_nav3d)/passthrough" />
+      <remap from="~output" to="/$(arg ns_nav3d)/outlier" />
+      <rosparam file="$(arg outlier_removal_config_file)" command="load"/>  
     </node> 
 
     <!-- Radius outlier removal  -->
-    <node name="radius_outlier_removal" 
+    <node name="$(arg camera_name)_radius_outlier_removal" 
       pkg="nodelet"
       type="nodelet"
       args="load pcl/RadiusOutlierRemoval $(arg obstacle_nodelet_manager)"
       output="$(arg output)" >
-      <remap from="~input" to="outlier_removal/output" />
-      <rosparam>
-        radius_search: 0.1
-        min_neighbors: 15
-      </rosparam>
+      <remap from="~input" to="/$(arg ns_nav3d)/outlier" />
+      <remap from="~output" to="/$(arg ns_nav3d)/radius_outlier" />
+      <rosparam file="$(arg radius_outlier_removal_config_file)" command="load"/>  
     </node> 
   </group>
 
   <include file="$(find iri_obstacle_detection_normals)/launch/nodelet.launch">
-    <arg name="ns" value="$(arg ns)"/>
-    <arg name="node_name" value="$(arg normals_node_name)"/>
+    <arg name="ns"                     value="$(arg ns_nav3d)"/>
+    <arg name="node_name"              value="$(arg camera_name)_normals"/>
     <arg name="camera_nodelet_manager" value="$(arg obstacle_nodelet_manager)"/>
-    <arg name="config_file" value="$(arg normals_config_file)"/>
-    <arg name="output" value="$(arg output)"/>
-    <arg name="launch_prefix" value="$(arg launch_prefix)"/>
-    <arg name="cloud_in" value="radius_outlier_removal/output"/>
+    <arg name="config_file"            value="$(arg normals_config_file)"/>
+    <arg name="output"                 value="$(arg output)"/>
+    <arg name="launch_prefix"          value="$(arg launch_prefix)"/>
+    <arg name="cloud_in"               value="/$(arg ns_nav3d)/radius_outlier"/>
+    <arg name="obstacles_cloud_out"    value="/$(arg ns_nav3d)/normals_obs"/>
+    <arg name="free_space_cloud_out"   value="/$(arg ns_nav3d)/normals_free"/>    
   </include>
 
 <!-- **************************** HOLE DETECTION ******************************* -->
 
-  <group ns="$(arg ns)">
+  <group ns="$(arg ns_nav3d)">
     <node name="$(arg hole_nodelet_manager)"
       pkg="nodelet"
       type="nodelet"
@@ -136,23 +133,27 @@
   </group>
 
   <include file="$(find iri_point_cloud_hole_detection)/launch/nodelet.launch">
-         <arg name="ns" value="$(arg ns)"/>
-         <arg name="node_name" value="$(arg near_hole_detection_node_name)"/>
+         <arg name="ns"                     value="$(arg ns_nav3d)"/>
+         <arg name="node_name"              value="$(arg camera_name)_hear_hole_detection"/>
          <arg name="camera_nodelet_manager" value="$(arg hole_nodelet_manager)"/>
-         <arg name="config_file" value="$(arg near_hole_detection_config_file)"/>
-         <arg name="output" value="$(arg output)"/>
-         <arg name="launch_prefix" default="$(arg launch_prefix)"/>
-         <arg name="cloud_in" default="$(arg hole_detection_cloud_in)"/>
+         <arg name="config_file"            value="$(arg near_hole_detection_config_file)"/>
+         <arg name="cloud_in"               value="/$(arg ns_nav3d)/radius_outlier"/>
+         <arg name="hole_zone_cloud_out"    value="/$(arg ns_nav3d)/near_hole_zone"/>
+         <arg name="hole_obs_cloud_out"     value="/$(arg ns_nav3d)/near_hole_obs"/>
+         <arg name="output"                 value="$(arg output)"/>
+         <arg name="launch_prefix"          value="$(arg launch_prefix)"/>
   </include>
 
   <include file="$(find iri_point_cloud_hole_detection)/launch/nodelet.launch">
-         <arg name="ns" value="$(arg ns)"/>
-         <arg name="node_name" value="$(arg far_hole_detection_node_name)"/>
+         <arg name="ns"                     value="$(arg ns_nav3d)"/>
+         <arg name="node_name"              value="$(arg camera_name)_far_hole_detection"/>
          <arg name="camera_nodelet_manager" value="$(arg hole_nodelet_manager)"/>
-         <arg name="config_file" value="$(arg far_hole_detection_config_file)"/>
-         <arg name="output" value="$(arg output)"/>
-         <arg name="launch_prefix" default="$(arg launch_prefix)"/>
-         <arg name="cloud_in" default="$(arg hole_detection_cloud_in)"/>
+         <arg name="config_file"            value="$(arg far_hole_detection_config_file)"/>
+         <arg name="cloud_in"               value="/$(arg ns_nav3d)/radius_outlier"/>
+         <arg name="hole_zone_cloud_out"    value="/$(arg ns_nav3d)/far_hole_zone"/>
+         <arg name="hole_obs_cloud_out"     value="/$(arg ns_nav3d)/far_hole_obs"/>
+         <arg name="output"                 value="$(arg output)"/>
+         <arg name="launch_prefix"          value="$(arg launch_prefix)"/>
   </include>
 
 </launch>
diff --git a/launch/include/camera_nodes.launch b/launch/include/camera_nodes.launch
index e7b56f821695272e131d03b5a6f6eaf979f360e9..09c20e41afcb733e35f411e055063ebf10c5187d 100644
--- a/launch/include/camera_nodes.launch
+++ b/launch/include/camera_nodes.launch
@@ -2,49 +2,56 @@
 
 <launch>
 
-  <arg name="ns" default="ana"/>
+  <arg name="ns"                                 default="ana"/>
+  <arg name="camera_name"                        default="camera"/>
+  <arg name="ns2"                                default="nav3d/$(arg camera_name)"/>
+  <arg name="ns_nav3d"                           default="$(arg ns)/$(arg ns2)"/>
+ 
+  <arg name="obstacle_nodelet_manager"           default="obstacle_nodelet_manager" />
 
-  <arg name="obstacle_nodelet_manager" default="obstacle_nodelet_manager" />
+  <arg name="camera_cloud_in"                    default="sensors/nav_cam/depth_registered/points"/>
 
-  <arg name="camera_cloud_in" default="sensors/nav_cam/depth_registered/points"/>
+  <arg name="average_config_file"                default="$(find iri_average_point_cloud)/config/default_config.yaml"/>
+  
+  <arg name="voxels_config_file"                 default="$(find iri_rosnav)/config/default_voxels_config.yaml"/>
 
-  <arg name="average_node_name" default="average_point_cloud"/>
-  <arg name="average_config_file" default="$(find iri_average_point_cloud)/config/default_config.yaml"/>
-  <arg name="average_cloud_in" default="sensors/nav_cam/depth_registered/points_throttle"/>
+  <arg name="passthrough_config_file"            default="$(find iri_rosnav)/config/default_passthrough_config.yaml"/>
 
-  <arg name="normals_node_name" default="obstacle_detection_normals"/>
-  <arg name="normals_config_file" default="$(find iri_obstacle_detection_normals)/config/default_config.yaml"/>
-  <arg name="normals_cloud_in" default="radius_outlier_removal/output"/>
+  <arg name="outlier_removal_config_file"        default="$(find iri_rosnav)/config/default_outlier_removal_config.yaml"/>
 
-  <arg name="near_hole_detection_node_name" default="near_hole_detection"/>
-  <arg name="near_hole_detection_config_file" default="$(find iri_point_cloud_hole_detection)/config/near_config.yaml"/>
-  <arg name="hole_detection_cloud_in" default="radius_outlier_removal/output"/>
+  <arg name="radius_outlier_removal_config_file" default="$(find iri_rosnav)/config/default_radius_outlier_removal_config.yaml"/>
 
-  <arg name="far_hole_detection_node_name" default="far_hole_detection"/>
-  <arg name="far_hole_detection_config_file" default="$(find iri_point_cloud_hole_detection)/config/far_config.yaml"/>
+  <arg name="normals_config_file"                default="$(find iri_obstacle_detection_normals)/config/default_config.yaml"/>
 
-  <arg name="output" default="screen"/>
-  <arg name="launch_prefix" default=""/>
+  <arg name="near_hole_detection_config_file"    default="$(find iri_point_cloud_hole_detection)/config/near_config.yaml"/>
+
+  <arg name="far_hole_detection_config_file"     default="$(find iri_point_cloud_hole_detection)/config/far_config.yaml"/>
+  
+  <arg name="base_frame_id"                      default="$(arg ns)/base_footprint"/>
+
+  <arg name="output"                             default="screen"/>
+  <arg name="launch_prefix"                      default=""/>
 
 <!-- *******************  OBSTACLE DETECTION  **********************************  -->
 
-  <group ns="$(arg ns)">
-    <node name="pc_throttler" 
+  <group ns="$(arg ns_nav3d)">
+    <node name="$(arg camera_name)_throttle" 
           type="throttle" 
           pkg="topic_tools" 
-          args="messages $(arg camera_cloud_in) 15 $(arg camera_cloud_in)_throttle" />
+          args="messages $(arg camera_cloud_in) 15 /$(arg ns_nav3d)/throttle" />
   </group>
 
   <include file="$(find iri_average_point_cloud)/launch/node.launch">
-	  <arg name="ns" value="$(arg ns)"/>
-    <arg name="node_name" value="$(arg average_node_name)"/>
-    <arg name="config_file" value="$(arg average_config_file)"/>
-    <arg name="output" value="$(arg output)"/>
-    <arg name="launch_prefix" default="$(arg launch_prefix)"/>
-    <arg name="cloud_in" default="$(arg average_cloud_in)"/>
+    <arg name="ns"            value="$(arg ns_nav3d)"/>
+    <arg name="node_name"     value="$(arg camera_name)_average"/>
+    <arg name="config_file"   value="$(arg average_config_file)"/>
+    <arg name="cloud_in"      value="/$(arg ns_nav3d)/throttle"/>
+    <arg name="cloud_out"     value="/$(arg ns_nav3d)/average"/>
+    <arg name="output"        value="$(arg output)"/>
+    <arg name="launch_prefix" value="$(arg launch_prefix)"/>
   </include>
 
-  <group ns="$(arg ns)">
+  <group ns="$(arg ns_nav3d)">
 
     <node name="$(arg obstacle_nodelet_manager)"
       pkg="nodelet"
@@ -53,93 +60,85 @@
       output="screen"/>
 
     <!-- Downsampling points  -->
-    <node name="voxel_grid_obs"
+    <node name="$(arg camera_name)_voxel_grid_obs"
       pkg="nodelet"
       type="nodelet"
       args="load pcl/VoxelGrid $(arg obstacle_nodelet_manager)"
       output="$(arg output)">
-      <remap from="~input" to="average_point_cloud/output" />
-      <rosparam>  
-        input_frame: 'ana/base_footprint'
-        output_frame: 'ana/base_footprint'
-        leaf_size: 0.03
-        filter_field_name: z
-        filter_limit_min: -0.5
-        filter_limit_max: 5.0
-        filter_limit_negative: False
-      </rosparam>
+      <remap from="~input" to="/$(arg ns_nav3d)/average" />
+      <remap from="~output" to="/$(arg ns_nav3d)/voxels" />
+      <param name="input_frame"  value="$(arg base_frame_id)"/>
+      <param name="output_frame" value="$(arg base_frame_id)"/>
+      <rosparam file="$(arg voxels_config_file)" command="load"/>  
     </node>
 
     <!-- Run a passthrough filter  -->
-    <node name="passthrough"
+    <node name="$(arg camera_name)_passthrough"
       pkg="nodelet" 
       type="nodelet"  
       args="load pcl/PassThrough $(arg obstacle_nodelet_manager)" 
       output="$(arg output)">
-      <remap from="~input" to="voxel_grid_obs/output" />
-      <rosparam>
-        filter_field_name: x
-        filter_limit_min: 0.01
-        filter_limit_max: 1.5
-        filter_limit_negative: False
-      </rosparam>
+      <remap from="~input" to="/$(arg ns_nav3d)/voxels" />
+      <remap from="~output" to="/$(arg ns_nav3d)/passthrough" />
+      <rosparam file="$(arg passthrough_config_file)" command="load"/>  
     </node>
 
     <!-- Statistical outlier removal  -->
-    <node name="outlier_removal" 
+    <node name="$(arg camera_name)_outlier_removal" 
       pkg="nodelet"
       type="nodelet"
       args="load pcl/StatisticalOutlierRemoval $(arg obstacle_nodelet_manager)"
       output="$(arg output)" >
-      <remap from="~input" to="passthrough/output" />
-      <rosparam>
-        mean_k: 20
-        stddev: 2.0
-        negative: False 
-      </rosparam>
+      <remap from="~input" to="/$(arg ns_nav3d)/passthrough" />
+      <remap from="~output" to="/$(arg ns_nav3d)/outlier" />
+      <rosparam file="$(arg outlier_removal_config_file)" command="load"/>  
     </node> 
 
     <!-- Radius outlier removal  -->
-    <node name="radius_outlier_removal" 
+    <node name="$(arg camera_name)_radius_outlier_removal" 
       pkg="nodelet"
       type="nodelet"
       args="load pcl/RadiusOutlierRemoval $(arg obstacle_nodelet_manager)"
       output="$(arg output)" >
-      <remap from="~input" to="outlier_removal/output" />
-      <rosparam>
-        radius_search: 0.1
-        min_neighbors: 15
-      </rosparam>
+      <remap from="~input" to="/$(arg ns_nav3d)/outlier" />
+      <remap from="~output" to="/$(arg ns_nav3d)/radius_outlier" />
+      <rosparam file="$(arg radius_outlier_removal_config_file)" command="load"/>  
     </node> 
   </group>
 
   <include file="$(find iri_obstacle_detection_normals)/launch/node.launch">
-    <arg name="ns" value="$(arg ns)"/>
-    <arg name="node_name" value="$(arg normals_node_name)"/>
-    <arg name="config_file" value="$(arg normals_config_file)"/>
-    <arg name="output" value="$(arg output)"/>
-    <arg name="launch_prefix" default="$(arg launch_prefix)"/>
-    <arg name="cloud_in" default="$(arg normals_cloud_in)"/>
+    <arg name="ns"                   value="$(arg ns_nav3d)"/>
+    <arg name="node_name"            value="$(arg camera_name)_normals"/>
+    <arg name="config_file"          value="$(arg normals_config_file)"/>
+    <arg name="output"               value="$(arg output)"/>
+    <arg name="launch_prefix"        value="$(arg launch_prefix)"/>
+    <arg name="cloud_in"             value="/$(arg ns_nav3d)/radius_outlier"/>
+    <arg name="obstacles_cloud_out"  value="/$(arg ns_nav3d)/normals_obs"/>
+    <arg name="free_space_cloud_out" value="/$(arg ns_nav3d)/normals_free"/>
   </include>
 
 <!-- **************************** HOLE DETECTION ******************************* -->
 
   <include file="$(find iri_point_cloud_hole_detection)/launch/node.launch">
-    <arg name="ns" value="$(arg ns)"/>
-    <arg name="node_name" value="$(arg near_hole_detection_node_name)"/>
-    <arg name="config_file" value="$(arg near_hole_detection_config_file)"/>
-    <arg name="output" value="$(arg output)"/>
-    <arg name="launch_prefix" default="$(arg launch_prefix)"/>
-    <arg name="cloud_in" default="$(arg hole_detection_cloud_in)"/>
+    <arg name="ns"                   value="$(arg ns_nav3d)"/>
+    <arg name="node_name"            value="$(arg camera_name)_near_hole_detection"/>
+    <arg name="config_file"          value="$(arg near_hole_detection_config_file)"/>
+    <arg name="cloud_in"             value="/$(arg ns_nav3d)/radius_outlier"/>
+    <arg name="hole_zone_cloud_out"  value="/$(arg ns_nav3d)/near_hole_zone"/>
+    <arg name="hole_obs_cloud_out"   value="/$(arg ns_nav3d)/near_hole_obs"/>
+    <arg name="output"               value="$(arg output)"/>
+    <arg name="launch_prefix"        value="$(arg launch_prefix)"/>
   </include>
 
   <include file="$(find iri_point_cloud_hole_detection)/launch/node.launch">
-    <arg name="ns" value="$(arg ns)"/>
-    <arg name="node_name" value="$(arg far_hole_detection_node_name)"/>
-    <arg name="config_file" value="$(arg far_hole_detection_config_file)"/>
-    <arg name="output" value="$(arg output)"/>
-    <arg name="launch_prefix" default="$(arg launch_prefix)"/>
-    <arg name="cloud_in" default="$(arg hole_detection_cloud_in)"/>
+    <arg name="ns"                   value="$(arg ns_nav3d)"/>
+    <arg name="node_name"            value="$(arg camera_name)_far_hole_detection"/>
+    <arg name="config_file"          value="$(arg far_hole_detection_config_file)"/>
+    <arg name="cloud_in"             value="/$(arg ns_nav3d)/radius_outlier"/>
+    <arg name="hole_zone_cloud_out"  value="/$(arg ns_nav3d)/far_hole_zone"/>
+    <arg name="hole_obs_cloud_out"   value="/$(arg ns_nav3d)/far_hole_obs"/>
+    <arg name="output"               value="$(arg output)"/>
+    <arg name="launch_prefix"        value="$(arg launch_prefix)"/>
   </include>
 
 </launch>
diff --git a/launch/include/lidar_nodelets.launch b/launch/include/lidar_nodelets.launch
index a7de794d62709b4fd05856394dd1d88312d4f859..f6abd2514bad8b80d432c340a9c01fadf1e68189 100644
--- a/launch/include/lidar_nodelets.launch
+++ b/launch/include/lidar_nodelets.launch
@@ -2,21 +2,23 @@
 <!-- -->
 <launch>
 
-  <arg name="ns" default="ana" />
-  <arg name="output" default="log"/>
-  <arg name="launch_prefix" default=""/>
+  <arg name="ns"                         default="ana" />
+  <arg name="lidar_name"                 default="lidar"/>
+  <arg name="ns2"                        default="nav3d/$(arg lidar_name)"/>
+  <arg name="ns_nav3d"                   default="$(arg ns)/$(arg ns2)"/>
+  
+  <arg name="output"                     default="log"/>
+  <arg name="launch_prefix"              default=""/>
 
-  <arg name="lidar_nodelet_manager" default="lidar_nodelet_manager"/>
+  <arg name="lidar_nodelet_manager"      default="lidar_nodelet_manager"/>
 
-  <arg name="lidar_filter_node_name" default="lidar_filter"/>
-  <arg name="lidar_filter_config_file" default="$(find iri_point_cloud_angle_filter)/config/default_config.yaml"/>
-  <arg name="lidar_filter_cloud_in" default="/pointcloud_in" />
+  <arg name="lidar_filter_config_file"   default="$(find iri_point_cloud_angle_filter)/config/default_config.yaml"/>
+  <arg name="lidar_filter_cloud_in"      default="/pointcloud_in" />
 
-  <arg name="lidar_detector_node_name" default="lidar_detector"/>
   <arg name="lidar_detector_config_file" default="$(find iri_lidar_obstacle_detector)/config/default_config.yaml"/>
 
   <!-- Obstacle nodelets manager -->
-  <group ns="$(arg ns)">
+  <group ns="$(arg ns_nav3d)">
     <node name="$(arg lidar_nodelet_manager)"
           pkg="nodelet"
           type="nodelet"
@@ -25,24 +27,28 @@
   </group>
 
   <include file="$(find iri_point_cloud_angle_filter)/launch/nodelet.launch">
-    <arg name="ns" value="$(arg ns)"/>
-    <arg name="node_name" value="$(arg lidar_filter_node_name)"/>
+    <arg name="ns"                    value="$(arg ns_nav3d)"/>
+    <arg name="node_name"             value="$(arg lidar_name)_angle_filter"/>
     <arg name="lidar_nodelet_manager" value="$(arg lidar_nodelet_manager)"/>
-    <arg name="config_file" value="$(arg lidar_filter_config_file)"/>
-    <arg name="output" value="$(arg output)"/>
-    <arg name="launch_prefix" value="$(arg launch_prefix)"/>
-    <arg name="cloud_in" value="$(arg lidar_filter_cloud_in)" />
+    <arg name="config_file"           value="$(arg lidar_filter_config_file)"/>
+    <arg name="output"                value="$(arg output)"/>
+    <arg name="launch_prefix"         value="$(arg launch_prefix)"/>
+    <arg name="cloud_in"              value="/$(arg lidar_filter_cloud_in)" />
+    <arg name="cloud_out"             value="/$(arg ns_nav3d)/angle_filtered" />
   </include>
 
   <include file="$(find iri_lidar_obstacle_detector)/launch/nodelet.launch">
-    <arg name="ns" value="$(arg ns)"/>
-    <arg name="node_name" value="$(arg lidar_detector_node_name)"/>
+    <arg name="ns"                    value="$(arg ns_nav3d)"/>
+    <arg name="node_name"             value="$(arg lidar_name)_obstacles"/>
     <arg name="lidar_nodelet_manager" value="$(arg lidar_nodelet_manager)"/>
-    <arg name="config_file" value="$(arg lidar_detector_config_file)"/>
-    <arg name="ranges_file" value="$(arg lidar_filter_config_file)"/>
-    <arg name="output" value="$(arg output)"/>
-    <arg name="launch_prefix" value="$(arg launch_prefix)"/>
-    <arg name="cloud_in" value="/$(arg ns)/$(arg lidar_filter_node_name)/cloud_out"/>
+    <arg name="config_file"           value="$(arg lidar_detector_config_file)"/>
+    <arg name="ranges_file"           value="$(arg lidar_filter_config_file)"/>
+    <arg name="output"                value="$(arg output)"/>
+    <arg name="launch_prefix"         value="$(arg launch_prefix)"/>
+    <arg name="cloud_in"              value="/$(arg ns_nav3d)/angle_filtered"/>
+    <arg name="debug_image"           value="/$(arg ns_nav3d)/debug_image"/>
+    <arg name="obstacles_cloud_out"   value="/$(arg ns_nav3d)/obstacles"/>
+    <arg name="free_space_cloud_out"  value="/$(arg ns_nav3d)/free_space"/>
   </include>
   
 </launch>
diff --git a/launch/include/lidar_nodes.launch b/launch/include/lidar_nodes.launch
index e555dc6047f4140a40c4efc52d0c6e72d89644b8..1c6503bc1d55cb6e6d9bb808c0677e7e2f229329 100644
--- a/launch/include/lidar_nodes.launch
+++ b/launch/include/lidar_nodes.launch
@@ -2,34 +2,40 @@
 <!-- -->
 <launch>
 
-  <arg name="ns" default="ana" />
-  <arg name="output" default="log"/>
-  <arg name="launch_prefix" default=""/>
+  <arg name="ns"                         default="ana" />
+  <arg name="lidar_name"                 default="lidar"/>
+  <arg name="ns2"                        default="nav3d/$(arg lidar_name)"/>
+  <arg name="ns_nav3d"                   default="$(arg ns)/$(arg ns2)"/>
 
-  <arg name="lidar_filter_node_name" default="lidar_filter"/>
-  <arg name="lidar_filter_config_file" default="$(find iri_point_cloud_angle_filter)/config/default_config.yaml"/>
-  <arg name="lidar_filter_cloud_in" default="/pointcloud_in" />
+  <arg name="output"                     default="log"/>
+  <arg name="launch_prefix"              default=""/>
+
+  <arg name="lidar_filter_config_file"   default="$(find iri_point_cloud_angle_filter)/config/default_config.yaml"/>
+  <arg name="lidar_filter_cloud_in"      default="/pointcloud_in" />
 
-  <arg name="lidar_detector_node_name" default="lidar_detector"/>
   <arg name="lidar_detector_config_file" default="$(find iri_lidar_obstacle_detector)/config/default_config.yaml"/>
 
   <include file="$(find iri_point_cloud_angle_filter)/launch/node.launch">
-    <arg name="ns" value="$(arg ns)"/>
-    <arg name="node_name" value="$(arg lidar_filter_node_name)"/>
-    <arg name="config_file" value="$(arg lidar_filter_config_file)"/>
-    <arg name="output" value="$(arg output)"/>
+    <arg name="ns"            value="$(arg ns_nav3d)"/>
+    <arg name="node_name"     value="$(arg lidar_name)_angle_filter"/>
+    <arg name="config_file"   value="$(arg lidar_filter_config_file)"/>
+    <arg name="output"        value="$(arg output)"/>
     <arg name="launch_prefix" value="$(arg launch_prefix)"/>
-    <arg name="cloud_in" value="$(arg lidar_filter_cloud_in)" />
+    <arg name="cloud_in"      value="/$(arg lidar_filter_cloud_in)" />
+    <arg name="cloud_out"     value="/$(arg ns_nav3d)/angle_filtered" />
   </include>
 
   <include file="$(find iri_lidar_obstacle_detector)/launch/node.launch">
-    <arg name="ns" value="$(arg ns)"/>
-    <arg name="node_name" value="$(arg lidar_detector_node_name)"/>
-    <arg name="config_file" value="$(arg lidar_detector_config_file)"/>
-    <arg name="ranges_file" value="$(arg lidar_filter_config_file)"/>
-    <arg name="output" value="$(arg output)"/>
-    <arg name="launch_prefix" value="$(arg launch_prefix)"/>
-    <arg name="cloud_in" value="/$(arg ns)/$(arg lidar_filter_node_name)/cloud_out"/>
+    <arg name="ns"                      value="$(arg ns_nav3d)"/>
+    <arg name="node_name"               value="$(arg lidar_name)_obstacles"/>
+    <arg name="config_file"             value="$(arg lidar_detector_config_file)"/>
+    <arg name="ranges_file"             value="$(arg lidar_filter_config_file)"/>
+    <arg name="output"                  value="$(arg output)"/>
+    <arg name="launch_prefix"           value="$(arg launch_prefix)"/>
+    <arg name="cloud_in"                value="/$(arg ns_nav3d)/angle_filtered"/>
+    <arg name="debug_image"             value="/$(arg ns_nav3d)/debug_image"/>
+    <arg name="obstacles_cloud_out"     value="/$(arg ns_nav3d)/obstacles"/>
+    <arg name="free_space_cloud_out"    value="/$(arg ns_nav3d)/free_space"/>
   </include>
   
 </launch>