diff --git a/launch/include/3d_nav_camera.launch b/launch/include/3d_nav_camera.launch
new file mode 100644
index 0000000000000000000000000000000000000000..7fdeac86f077a808963eabeac208348795320a44
--- /dev/null
+++ b/launch/include/3d_nav_camera.launch
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<!-- -->
+<launch>
+  
+  <arg name="ns" default="ana" />
+  <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="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="normals_node_name" default="obstacle_detection_normals"/>
+  <arg name="normals_config_file" default="$(find iri_nav_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"/>
+
+  <group if="$(arg use_nodelets)">
+    <include file="$(find iri_3dnav)/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)"/>
+    </include>
+  </group>
+
+  <group unless="$(arg use_nodelets)">
+    <include file="$(find iri_3dnav)/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>
+  </group>
+</launch>
+
diff --git a/launch/include/3d_nav_lidar.launch b/launch/include/3d_nav_lidar.launch
new file mode 100644
index 0000000000000000000000000000000000000000..837ea11194c876950cf0dfa2581b7e425a4a46cf
--- /dev/null
+++ b/launch/include/3d_nav_lidar.launch
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!-- -->
+<launch>
+  
+  <arg name="ns" default="ana" />
+  <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="/ana/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_3dnav)/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="lidar_detector_config_file" value="$(arg lidar_detector_config_file)"/>
+    </include>
+  </group>
+
+  <group unless="$(arg use_nodelets)">
+    <include file="$(find iri_3dnav)/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="lidar_detector_config_file" value="$(arg lidar_detector_config_file)"/>
+    </include>
+  </group>
+
+</launch>
+
diff --git a/params/costmap/3d_camera_layers.yaml b/params/costmap/3d_camera_layers.yaml
new file mode 100755
index 0000000000000000000000000000000000000000..7bcef370683c3d4c9e6f8e0811944e4fed78194e
--- /dev/null
+++ b/params/costmap/3d_camera_layers.yaml
@@ -0,0 +1,96 @@
+obstacle_layer_camera:
+  enabled: true
+  track_unknown_space: true
+  transform_tolerance: 0.2
+  max_obstacle_height: 100.0 #1.0
+  footprint_clearing_enabled: false
+  combination_method: 1
+  observation_sources:  camera_marking
+
+  camera_marking: {
+    sensor_frame: /robot/base_footprint,
+    data_type: PointCloud,
+    topic: /robot/point_cloud_obs,
+    observation_persistence: 0.0,
+    marking: true,
+    clearing: true,
+    min_obstacle_height: -100.0,
+    max_obstacle_height: 100.0,
+    expected_update_rate: 1,
+    obstacle_range: 5.0,
+    raytrace_range: 10.0
+  }
+
+hole_layer_near_camera:
+  enabled: true
+  track_unknown_space: true
+  transform_tolerance: 0.2
+  max_obstacle_height: 100.0 #1.0
+  footprint_clearing_enabled: false
+  combination_method: 1
+  observation_sources: hole_near_marking hole_near_clearing
+
+  hole_near_marking: {
+    sensor_frame: /robot/base_footprint,
+    data_type: PointCloud2,
+    topic: /robot/point_cloud_mark_near,
+    observation_persistence: 0.0,
+    marking: true,
+    clearing: false,
+    min_obstacle_height: -100.0,
+    max_obstacle_height: 100.0,
+    expected_update_rate: 1,
+    obstacle_range: 5.0,
+    raytrace_range: 10.0
+  }
+
+  hole_near_clearing: {
+    sensor_frame: /robot/base_footprint,
+    data_type: PointCloud2,
+    topic: /robot/point_cloud_clear_near,
+    observation_persistence: 0.0,
+    marking: false,
+    clearing: true,
+    min_obstacle_height: -100.0,
+    max_obstacle_height: 100.0,
+    expected_update_rate: 1,
+    obstacle_range: 5.0,
+    raytrace_range: 10.0
+  }
+
+hole_layer_far_camera:
+  enabled: true
+  track_unknown_space: true
+  transform_tolerance: 0.2
+  max_obstacle_height: 100.0 #1.0
+  footprint_clearing_enabled: false
+  combination_method: 1
+  observation_sources: hole_far_marking hole_far_clearing
+
+  hole_far_marking: {
+    sensor_frame: /robot/base_footprint,
+    data_type: PointCloud2,
+    topic: /robot/point_cloud_mark_far,
+    observation_persistence: 0.0,
+    marking: true,
+    clearing: false,
+    min_obstacle_height: -100.0,
+    max_obstacle_height: 100.0,
+    expected_update_rate: 1,
+    obstacle_range: 5.0,
+    raytrace_range: 10.0
+  }
+
+  hole_far_clearing: {
+    sensor_frame: /robot/base_footprint,
+    data_type: PointCloud2,
+    topic: /robot/point_cloud_clear_far,
+    observation_persistence: 0.0,
+    marking: false,
+    clearing: true,
+    min_obstacle_height: -100.0,
+    max_obstacle_height: 100.0,
+    expected_update_rate: 1,
+    obstacle_range: 5.0,
+    raytrace_range: 10.0
+  }
diff --git a/params/costmap/3d_lidar_layers.yaml b/params/costmap/3d_lidar_layers.yaml
new file mode 100755
index 0000000000000000000000000000000000000000..49d7c8164baa58efbb53db07cfae44c4c7571936
--- /dev/null
+++ b/params/costmap/3d_lidar_layers.yaml
@@ -0,0 +1,21 @@
+obstacle_layer_lidar:
+  enabled: true
+  track_unknown_space: true
+  transform_tolerance: 0.2
+  max_obstacle_height: 10.0
+  footprint_clearing_enabled: false
+  combination_method: 1 
+  observation_sources:  lidar_marking
+  lidar_marking: {
+    sensor_frame: /robot/base_footprint,
+    data_type: LaserScan,
+    topic: /robot/scan,
+    observation_persistence: 0.0,
+    marking: true,
+    clearing: true,
+    min_obstacle_height: -10.0,
+    max_obstacle_height: 10.0,
+    expected_update_rate: 1,
+    obstacle_range: 5.0,
+    raytrace_range: 200.0
+  }
diff --git a/params/costmap/3d_local_params.yaml b/params/costmap/3d_local_params.yaml
new file mode 100755
index 0000000000000000000000000000000000000000..c1af5d7a2837179562a8904fa4c8bf70dbd665db
--- /dev/null
+++ b/params/costmap/3d_local_params.yaml
@@ -0,0 +1,20 @@
+#local_costmap:  ###namespace added when loading parameters in move_base.launch
+global_frame: robot/odom
+update_frequency: 5.0
+publish_frequency: 2.0
+rolling_window: true
+width: 10.0
+height: 10.0
+resolution: 0.1
+#origin_x: 0.0
+#origin_y: 0.0
+
+#costmap plugins
+plugins:
+ - {name: obstacle_layer_lidar,   type: "costmap_2d::ObstacleLayer"}
+ - {name: obstacle_layer_camera,  type: "costmap_2d::ObstacleLayer"}
+ - {name: hole_layer_near_camera, type: "costmap_2d::ObstacleLayer"}
+ - {name: hole_layer_far_camera,  type: "costmap_2d::ObstacleLayer"}
+ - {name: inflation_layer,        type: "costmap_2d::InflationLayer"}
+
+
diff --git a/params/costmap/map/3d_global_params.yaml b/params/costmap/map/3d_global_params.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..09fc474b71a4643b2f55a495eaafb61aac8b4b61
--- /dev/null
+++ b/params/costmap/map/3d_global_params.yaml
@@ -0,0 +1,24 @@
+#global_costmap: ###namespace added when loading parameters in move_base.launch
+global_frame: map
+update_frequency: 1.0
+publish_frequency: 1.0
+rolling_window: false
+
+plugins:
+  - {name: static_layer,          type: "costmap_2d::StaticLayer"}
+  - {name: obstacle_layer_lidar,  type: "costmap_2d::ObstacleLayer"}
+  - {name: obstacle_layer_camera, type: "costmap_2d::ObstacleLayer"}
+  - {name: hole_layer_near_camera,type: "costmap_2d::ObstacleLayer"}
+  - {name: hole_layer_far_camera, type: "costmap_2d::ObstacleLayer"}
+  - {name: inflation_layer,       type: "costmap_2d::InflationLayer"}
+    
+static_layer:
+  enabled: true
+  map_topic: /map
+  first_map_only: false
+  subscribe_to_updates: false
+  unknown_cost_value: -1
+  use_maximum: false
+  lethal_cost_threshold: 100
+  track_unknown_space: true
+  trinary_costmap: true
diff --git a/params/costmap/no_map/3d_global_params.yaml b/params/costmap/no_map/3d_global_params.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f278ca4772626a74ba82a7288019c190d9bbb078
--- /dev/null
+++ b/params/costmap/no_map/3d_global_params.yaml
@@ -0,0 +1,18 @@
+#global_costmap: ###namespace added when loading parameters in move_base.launch
+global_frame: /robot/odom
+update_frequency: 1.0
+publish_frequency: 0.0
+rolling_window: true
+transform_tolerance: 1.0
+width: 20.0
+height: 20.0
+resolution: 0.2
+origin_x: 0.0
+origin_y: 0.0
+
+plugins:
+  - {name: obstacle_layer_lidar,   type: "costmap_2d::ObstacleLayer"}
+  - {name: obstacle_layer_camera,  type: "costmap_2d::ObstacleLayer"}
+  - {name: hole_layer_near_camera, type: "costmap_2d::ObstacleLayer"}
+  - {name: hole_layer_far_camera,  type: "costmap_2d::ObstacleLayer"}
+  - {name: inflation_layer,        type: "costmap_2d::InflationLayer"}