Index: trunk/extremum_seeking/esc_approx/include/esc_approx/approx_esc_1d.h
===================================================================
--- trunk/extremum_seeking/esc_approx/include/esc_approx/approx_esc_1d.h	(revision 9)
+++ trunk/extremum_seeking/esc_approx/include/esc_approx/approx_esc_1d.h	(revision 13)
@@ -37,4 +37,5 @@
 	std::vector<double> monitor();
 	std::vector<std::string> monitorNames();
+	void reset();
 
 };
Index: trunk/extremum_seeking/esc_approx/include/esc_approx/approx_esc_2d.h
===================================================================
--- trunk/extremum_seeking/esc_approx/include/esc_approx/approx_esc_2d.h	(revision 9)
+++ trunk/extremum_seeking/esc_approx/include/esc_approx/approx_esc_2d.h	(revision 13)
@@ -40,4 +40,5 @@
 	std::vector<double> monitor();
 	std::vector<std::string> monitorNames();
+	void reset();
 
 };
Index: trunk/extremum_seeking/esc_approx/src/approx_esc_1d.cpp
===================================================================
--- trunk/extremum_seeking/esc_approx/src/approx_esc_1d.cpp	(revision 9)
+++ trunk/extremum_seeking/esc_approx/src/approx_esc_1d.cpp	(revision 13)
@@ -35,9 +35,9 @@
 	k_grad_ = k_grad;
 	init_vel_ = init_vel;
-	sample_ = 0;
 	sampling_ = sampling;
-	ptr_ = 0;
 	states_.resize(data_size);
 	obj_vals_.resize(data_size);
+	sample_ = 0;
+	ptr_ = 0;
 	initialized_ = true;
 }
@@ -111,2 +111,7 @@
 	return std::vector<std::string>();
 }
+
+void ApproxESC1D::reset(){
+	sample_ = 0;
+	ptr_ = 0;
+}
Index: trunk/extremum_seeking/esc_approx/src/approx_esc_2d.cpp
===================================================================
--- trunk/extremum_seeking/esc_approx/src/approx_esc_2d.cpp	(revision 9)
+++ trunk/extremum_seeking/esc_approx/src/approx_esc_2d.cpp	(revision 13)
@@ -33,8 +33,8 @@
 	k_grad_ = k_grad;
 	init_vel_ = init_vel;
+	sampling_ = sampling;
 	sample_ = 0;
-	sampling_ = sampling;
 	ptr_ = 0;
-	states_ = Eigen::MatrixXf::Zero(2,data_size);
+	states_ = Eigen::MatrixXf::Zero(2,data_size_);
 	obj_vals_ = Eigen::VectorXf::Zero(data_size_);
 	state_curr_.resize(2);
@@ -133,2 +133,9 @@
 	return std::vector<std::string>();
 }
+
+void ApproxESC2D::reset(){
+	sample_ = 0;
+	ptr_ = 0;
+	states_ = Eigen::MatrixXf::Zero(2,data_size_);
+	obj_vals_ = Eigen::VectorXf::Zero(data_size_);
+}
