diff --git a/pcl_ros/CMakeLists.txt b/pcl_ros/CMakeLists.txt
index 939479e..1c3881d 100644
--- a/pcl_ros/CMakeLists.txt
+++ b/pcl_ros/CMakeLists.txt
@@ -22,7 +22,8 @@ generate_dynamic_reconfigure_options(cfg/Filter.cfg
                                      cfg/ExtractIndices.cfg 
                                      cfg/StatisticalOutlierRemoval.cfg
                                      cfg/VoxelGrid.cfg
-
+                                     cfg/CropBox.cfg
+                                     cfg/RadiusOutlierRemoval.cfg
 )
 include_directories(include cfg/cpp)
 
@@ -62,6 +63,7 @@ add_library (pcl_ros_filters
 	      src/pcl_ros/filters/radius_outlier_removal.cpp
 	      src/pcl_ros/filters/statistical_outlier_removal.cpp
 	      src/pcl_ros/filters/voxel_grid.cpp
+              src/pcl_ros/filters/crop_box.cpp
 	     )
 #add_compile_flags (pcl_ros_filters ${SSE_FLAGS})
 target_link_libraries (pcl_ros_filters pcl_ros_tf ${PCL_LIBRARIES} ${Boost_LIBRARIES} ${catkin_LIBRARIES})
diff --git a/pcl_ros/cfg/CropBox.cfg b/pcl_ros/cfg/CropBox.cfg
new file mode 100755
index 0000000..0195527
--- /dev/null
+++ b/pcl_ros/cfg/CropBox.cfg
@@ -0,0 +1,31 @@
+#! /usr/bin/env python
+
+# set up parameters that we care about
+PACKAGE = 'pcl_ros'
+
+import roslib;
+roslib.load_manifest (PACKAGE);
+from dynamic_reconfigure.parameter_generator import *;
+gen = ParameterGenerator ()
+
+# enabling/disabling the unit limits
+# def add (self, name, paramtype, level, description, default = None, min = None, max = None, edit_method = ""):
+
+gen.add ("min_x", double_t, 0, "min point x of the box", -0.5, -3.0, 3.0)
+gen.add ("min_y", double_t, 0, "min point y of the box", -0.5, -3.0, 3.0)
+gen.add ("min_z", double_t, 0, "min point z of the box", -0.5, -3.0, 3.0)
+gen.add ("min_w", double_t, 0, "min point z of the box", 1.0, -3.0, 3.0)
+gen.add ("max_x", double_t, 0, "max point x of the box", 0.5, -3.0, 3.0)
+gen.add ("max_y", double_t, 0, "max point y of the box", 0.5, -3.0, 3.0)
+gen.add ("max_z", double_t, 0, "max point z of the box", 0.5, -3.0, 3.0)
+gen.add ("max_w", double_t, 0, "max point z of the box", 1.0, -3.0, 3.0)
+gen.add ("target_frame_id", str_t, 0, "the name of target frame_id", "base_link");
+gen.add ("translation_x", double_t, 0, "translation point x of the box", 0.0, -10.0, 10.0)
+gen.add ("translation_y", double_t, 0, "translation point x of the box", 0.0, -10.0, 10.0)
+gen.add ("translation_z", double_t, 0, "translation point x of the box", 0.0, -10.0, 10.0)
+gen.add ("rotation_x", double_t, 0, "rotation point x of the box", 0.0, -10.0, 10.0)
+gen.add ("rotation_y", double_t, 0, "rotation point x of the box", 0.0, -10.0, 10.0)
+gen.add ("rotation_z", double_t, 0, "rotation point x of the box", 0.0, -10.0, 10.0)
+
+exit (gen.generate (PACKAGE, "pcl_ros", "CropBox"))
+
diff --git a/pcl_ros/cfg/RadiusOutlierRemoval.cfg b/pcl_ros/cfg/RadiusOutlierRemoval.cfg
new file mode 100755
index 0000000..8188273
--- /dev/null
+++ b/pcl_ros/cfg/RadiusOutlierRemoval.cfg
@@ -0,0 +1,17 @@
+#! /usr/bin/env python
+
+# set up parameters that we care about
+PACKAGE = 'pcl_ros'
+
+import roslib;
+roslib.load_manifest (PACKAGE);
+from dynamic_reconfigure.parameter_generator import *;
+gen = ParameterGenerator ()
+
+# enabling/disabling the unit limits
+# def add (self, name, paramtype, level, description, default = None, min = None, max = None, edit_method = ""):
+gen.add ("radius_search", double_t, 0, "the sphere radius for determing the k-nearest neighbors", 0.0, 0.1, 100.0)
+gen.add ("min_neighbors_in_radius", int_t, 0, "the minimum number of neighbors that a point needs to have in the given search radius", 1, 2, 100)
+
+exit (gen.generate (PACKAGE, "pcl_ros", "RadiusOutlierRemoval"))
+
diff --git a/pcl_ros/include/pcl_ros/filters/crop_box.h b/pcl_ros/include/pcl_ros/filters/crop_box.h
new file mode 100644
index 0000000..bad409f
--- /dev/null
+++ b/pcl_ros/include/pcl_ros/filters/crop_box.h
@@ -0,0 +1,118 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ *  Copyright (c) 2010, Willow Garage, Inc.
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *
+ *   * Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ *   * Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the following
+ *     disclaimer in the documentation and/or other materials provided
+ *     with the distribution.
+ *   * Neither the name of Willow Garage, Inc. nor the names of its
+ *     contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ *  POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $Id: crop_box.h 35876 2011-02-09 01:04:36Z rusu $
+ *
+ */
+
+#ifndef PCL_ROS_FILTERS_CROPBOX_H_
+#define PCL_ROS_FILTERS_CROPBOX_H_
+
+// PCL includes
+#include <pcl/filters/crop_box.h>
+#include "pcl_ros/filters/filter.h"
+
+// Dynamic reconfigure
+#include "pcl_ros/CropBoxConfig.h"
+
+namespace pcl_ros
+{
+  /** \brief @b CropBox is a simple filter that removes outliers if the number of neighbors in a certain
+    * search radius is smaller than a given K.
+    * \note setFilterFieldName (), setFilterLimits (), and setFilterLimitNegative () are ignored.
+    * \author Radu Bogdan Rusu
+    */
+  class CropBox : public Filter
+  {
+    protected:
+      /** \brief Pointer to a dynamic reconfigure service. */
+      boost::shared_ptr <dynamic_reconfigure::Server<pcl_ros::CropBoxConfig> > srv_;
+
+      /** \brief Call the actual filter.
+        * \param input the input point cloud dataset
+        * \param indices the input set of indices to use from \a input
+        * \param output the resultant filtered dataset
+        */
+      inline void
+      filter (const PointCloud2::ConstPtr &input, const IndicesPtr &indices,
+              PointCloud2 &output)
+      {
+        boost::mutex::scoped_lock lock (mutex_);
+
+	try{
+	  tf::StampedTransform sensor2target_tf;
+	  tf_.waitForTransform(input->header.frame_id, target_frame_id_,
+			       input->header.stamp, ros::Duration(1.0));
+	  tf_.lookupTransform(input->header.frame_id, target_frame_id_,
+			      input->header.stamp, sensor2target_tf);
+	  tf::Vector3 target_pos = sensor2target_tf.getOrigin();
+	  Eigen::Vector3f frame_id_translation =
+	    Eigen::Vector3f(sensor2target_tf.getOrigin().getX(),
+			    sensor2target_tf.getOrigin().getY(),
+			    sensor2target_tf.getOrigin().getZ());
+	  impl_.setTranslation(frame_id_translation + initial_translation_);
+	  impl_.setRotation(initial_rotation_);
+	} catch (tf::TransformException ex){
+	  ROS_ERROR("%s",ex.what());
+	  return;
+	}
+        impl_.setInputCloud (input);
+        impl_.setIndices (indices);
+        impl_.filter (output);
+      }
+
+      /** \brief Child initialization routine.
+        * \param nh ROS node handle
+        * \param has_service set to true if the child has a Dynamic Reconfigure service
+        */
+      bool child_init (ros::NodeHandle &nh, bool &has_service);
+
+      /** \brief Dynamic reconfigure callback
+        * \param config the config object
+        * \param level the dynamic reconfigure level
+        */
+      void config_callback (pcl_ros::CropBoxConfig &config, uint32_t level);
+
+    private:
+      /** \brief The PCL filter implementation used. */
+      pcl::CropBox<sensor_msgs::PointCloud2> impl_;
+      tf::TransformListener tf_;
+      std::string target_frame_id_;
+      Eigen::Vector3f initial_translation_;
+      Eigen::Vector3f initial_rotation_;
+    public:
+      EIGEN_MAKE_ALIGNED_OPERATOR_NEW
+  };
+}
+
+#endif  //#ifndef PCL_FILTERS_CROPBOX_H_
diff --git a/pcl_ros/include/pcl_ros/filters/radius_outlier_removal.h b/pcl_ros/include/pcl_ros/filters/radius_outlier_removal.h
index fc316a8..5ccc598 100644
--- a/pcl_ros/include/pcl_ros/filters/radius_outlier_removal.h
+++ b/pcl_ros/include/pcl_ros/filters/radius_outlier_removal.h
@@ -42,6 +42,9 @@
 #include <pcl/filters/radius_outlier_removal.h>
 #include "pcl_ros/filters/filter.h"
 
+// Dynamic reconfigure
+#include "pcl_ros/RadiusOutlierRemovalConfig.h"
+
 namespace pcl_ros
 {
   /** \brief @b RadiusOutlierRemoval is a simple filter that removes outliers if the number of neighbors in a certain
@@ -52,6 +55,9 @@ namespace pcl_ros
   class RadiusOutlierRemoval : public Filter
   {
     protected:
+      /** \brief Pointer to a dynamic reconfigure service. */
+      boost::shared_ptr <dynamic_reconfigure::Server<pcl_ros::RadiusOutlierRemovalConfig> > srv_;
+
       /** \brief Call the actual filter. 
         * \param input the input point cloud dataset
         * \param indices the input set of indices to use from \a input
@@ -61,6 +67,9 @@ namespace pcl_ros
       filter (const PointCloud2::ConstPtr &input, const IndicesPtr &indices, 
               PointCloud2 &output)
       {
+        boost::mutex::scoped_lock lock (mutex_);
+	NODELET_ERROR ("[%s] input.dense %d" , getName().c_str(), input->is_dense);
+
         impl_.setInputCloud (input);
         impl_.setIndices (indices);
         impl_.filter (output);
@@ -68,8 +77,15 @@ namespace pcl_ros
 
       /** \brief Child initialization routine.
         * \param nh ROS node handle
+        * \param has_service set to true if the child has a Dynamic Reconfigure service
+        */
+      bool child_init (ros::NodeHandle &nh, bool &has_service);
+
+      /** \brief Dynamic reconfigure callback
+        * \param config the config object
+        * \param level the dynamic reconfigure level
         */
-      virtual inline bool child_init (ros::NodeHandle &nh) { return (true); }
+      void config_callback (pcl_ros::RadiusOutlierRemovalConfig &config, uint32_t level);
 
     private:
       /** \brief The PCL filter implementation used. */
diff --git a/pcl_ros/pcl_nodelets.xml b/pcl_ros/pcl_nodelets.xml
index e6cd0f9..e4f6579 100644
--- a/pcl_ros/pcl_nodelets.xml
+++ b/pcl_ros/pcl_nodelets.xml
@@ -81,6 +81,18 @@
       StatisticalOutlierRemoval uses point neighborhood statistics to filter outlier data.
     </description>
   </class>
+
+  <class name="pcl/RadiusOutlierRemoval" type="RadiusOutlierRemoval" base_class_type="nodelet::Nodelet">
+    <description>
+      Added.
+    </description>
+  </class>
+
+  <class name="pcl/CropBox" type="CropBox" base_class_type="nodelet::Nodelet">
+    <description>
+      Added.
+    </description>
+  </class>
 </library>
 
 
diff --git a/pcl_ros/src/pcl_ros/filters/crop_box.cpp b/pcl_ros/src/pcl_ros/filters/crop_box.cpp
new file mode 100644
index 0000000..4d731bd
--- /dev/null
+++ b/pcl_ros/src/pcl_ros/filters/crop_box.cpp
@@ -0,0 +1,80 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ *  Copyright (c) 2009, Willow Garage, Inc.
+ *  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *
+ *   * Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ *   * Redistributions in binary form must reproduce the above
+ *     copyright notice, this list of conditions and the following
+ *     disclaimer in the documentation and/or other materials provided
+ *     with the distribution.
+ *   * Neither the name of Willow Garage, Inc. nor the names of its
+ *     contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ *  FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ *  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ *  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ *  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ *  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ *  POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $Id: radius_outlier_removal.cpp 33319 2010-10-15 04:49:28Z rusu $
+ *
+ */
+
+#include <pluginlib/class_list_macros.h>
+#include "pcl_ros/filters/crop_box.h"
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+bool
+pcl_ros::CropBox::child_init (ros::NodeHandle &nh, bool &has_service)
+{
+  // Enable the dynamic reconfigure service
+  has_service = true;
+  srv_ = boost::make_shared <dynamic_reconfigure::Server<pcl_ros::CropBoxConfig> > (nh);
+  dynamic_reconfigure::Server<pcl_ros::CropBoxConfig>::CallbackType f = boost::bind (&CropBox::config_callback, this, _1, _2);
+  srv_->setCallback (f);
+  return (true);
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+void
+pcl_ros::CropBox::config_callback (pcl_ros::CropBoxConfig &config, uint32_t level)
+{
+  boost::mutex::scoped_lock lock (mutex_);
+  Eigen::Vector4f min = Eigen::Vector4f(config.min_x, config.min_y, config.min_z, config.min_w);
+  Eigen::Vector4f max = Eigen::Vector4f(config.max_x, config.max_y, config.max_z, config.max_w);
+
+  if ( impl_.getMin() != min ) {
+    impl_.setMin (min);
+    NODELET_DEBUG ("[%s::config_callback] Setting the min_pt for determing the min point of the box to (%f,%f,%f,%f)", getName ().c_str (), config.min_x, config.min_y, config.min_z, config.min_w);
+  }
+
+  if ( impl_.getMax() != max ) {
+    impl_.setMax (max);
+    NODELET_DEBUG ("[%s::config_callback] Setting the max_pt for determaxg the max point of the box to (%f,%f,%f,%f)", getName ().c_str (), config.max_x, config.max_y, config.max_z, config.min_w);
+  }
+
+  target_frame_id_ = config.target_frame_id;
+  NODELET_DEBUG ("[%s::config_callback] Setting the target_frame_id of the box to %s", getName ().c_str (), config.target_frame_id.c_str ());
+
+  initial_translation_ = Eigen::Vector3f(config.translation_x, config.translation_y, config.translation_z);
+  initial_rotation_ = Eigen::Vector3f(config.rotation_x, config.rotation_y, config.rotation_z);
+}
+
+typedef pcl_ros::CropBox CropBox;
+PLUGINLIB_DECLARE_CLASS (pcl, CropBox, CropBox, nodelet::Nodelet);
+
diff --git a/pcl_ros/src/pcl_ros/filters/radius_outlier_removal.cpp b/pcl_ros/src/pcl_ros/filters/radius_outlier_removal.cpp
index da965c6..4f214ed 100644
--- a/pcl_ros/src/pcl_ros/filters/radius_outlier_removal.cpp
+++ b/pcl_ros/src/pcl_ros/filters/radius_outlier_removal.cpp
@@ -38,6 +38,38 @@
 #include <pluginlib/class_list_macros.h>
 #include "pcl_ros/filters/radius_outlier_removal.h"
 
+//////////////////////////////////////////////////////////////////////////////////////////////
+bool
+pcl_ros::RadiusOutlierRemoval::child_init (ros::NodeHandle &nh, bool &has_service)
+{
+  // Enable the dynamic reconfigure service
+  has_service = true;
+  srv_ = boost::make_shared <dynamic_reconfigure::Server<pcl_ros::RadiusOutlierRemovalConfig> > (nh);
+  dynamic_reconfigure::Server<pcl_ros::RadiusOutlierRemovalConfig>::CallbackType f = boost::bind (&RadiusOutlierRemoval::config_callback, this, _1, _2);
+  srv_->setCallback (f);
+
+  return (true);
+}
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+void
+pcl_ros::RadiusOutlierRemoval::config_callback (pcl_ros::RadiusOutlierRemovalConfig &config, uint32_t level)
+{
+  boost::mutex::scoped_lock lock (mutex_);
+
+  if (impl_.getRadiusSearch () != config.radius_search)
+  {
+    impl_.setRadiusSearch (config.radius_search);
+    NODELET_DEBUG ("[%s::config_callback] Setting the sphere radius for determing the k-nearest neighbors to : %f.", getName ().c_str (), config.radius_search);
+  }
+
+  if (impl_.getMinNeighborsInRadius () != config.min_neighbors_in_radius)
+  {
+    impl_.setMinNeighborsInRadius (config.min_neighbors_in_radius);
+    NODELET_DEBUG ("[%s::config_callback] Setting the minimum number of neighbors that a point needs to have in the given search radius to : %d.", getName ().c_str (), config.min_neighbors_in_radius);
+  }
+}
+
 typedef pcl_ros::RadiusOutlierRemoval RadiusOutlierRemoval;
 PLUGINLIB_EXPORT_CLASS(RadiusOutlierRemoval,nodelet::Nodelet);
 
